我有一个方法设置为几个Buttons和ToolStripMenuItems中的click事件处理程序。
我想获取发件人的Tag属性以查看哪些被点击,但似乎无法将ToolStripMenuItems转换为Control。
如何获取Buttons和ToolStripMenuItems的Tag属性?
这是我方法的简化版本。
private void menu_Click(object sender, EventArgs e)
{
switch (((Control)sender).Tag.ToString())
{
case "X":
// do something
break;
case "Y":
//do something else
break;
default:
//something else
break;
}
}
谢谢!
答案 0 :(得分:5)
因为没有定义Tag的Button和ToolStripMenuItem的公共基类或接口,所以你需要进行强制转换:
internal static object GetTag(object sender)
{
Button button = sender as Button;
ToolStripItem tsi = sender as ToolStripItem;
if (button != null)
return button.Tag;
if (tsi != null)
return tsi.Tag;
throw new ArgumentException("Unexpected sender");
}