如何对发件人进行类型转换?

时间:2011-11-23 16:04:58

标签: .net casting click delphi-prism sender

我在Click事件中有一个ToolStripButton作为发件人。我需要能够将发送者类型转换为Toolstripbutton并将其标记属性检索为整数。我想,我在以下代码中这样做。我的程序编译成功,但它引发了无效的类型转换运行时错误。

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

TMakerTool = public enum

theTool:TMakerTool

我看到tag属性是一个包含标记为字符串的对象。

那么,我做错了什么?

谢谢。

2 个答案:

答案 0 :(得分:2)

an Enum type提供a Parse method(从{4}开始也是a TryParse method)。

虽然我不熟悉Delphi,但我认为您可以执行以下操作:

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/

答案 1 :(得分:0)

我试着跟随Wily博士的Apprentice的回答,但它没有用。但是,他确实帮助我更好地理解它。

如果有人感兴趣,我可以通过执行以下操作来解决错误。

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