2011-11-23 96 views
0

我有一個ToolStripButton作爲點擊事件中的發件人。我需要能夠將發件人轉換爲Toolstripbutton,並以整數形式檢索其標籤屬性。我想,我在下面的代碼中這樣做。我的程序編譯成功,但它引發無效的類型轉換運行時錯誤。如何強制發送發件人?

theTool := TMakerTool((sender as ToolStripButton).tag); 

TMakerTool = public enum 

theTool:TMakerTool 

我看到標記屬性是一個包含標記爲字符串的對象。

那麼,我做錯了什麼?

謝謝。

+0

您是否檢查發件人確實是'ToolStripButton'? –

+0

是的,它假定是ToolStripButton。 – ThN

回答

0

我嘗試按照威利博士的學徒的答案,但它沒有工作。不過,他確實幫助我更好地理解它。

如果有人感興趣,我可以通過執行以下操作來消除錯誤。

theTool := TMakerTool(int32.Parse((sender as ToolStripButton).tag.ToString)); 
2

an Enum type,它提供a Parse method(也是從v4起的a TryParse method)。

雖然我不熟悉德爾福,我認爲你可以做到以下幾點:

TMakerTool(Enum.Parse(typeof(TMakerTool), (sender as ToolStripButton).tag.ToString(), true)); 

參考鏈接: http://theroadtodelphi.wordpress.com/2009/10/27/convert-string-to-enum-using-delphi-prism/

+0

我做了更改,它要求將TMakertool作爲對象實例化。 – ThN

+0

它將TMakerTool作爲類處理。爲什麼? – ThN

相關問題