从ClickStripMenuItem获取Tag属性,在Click事件处理程序中获取Button

时间:2011-02-10 22:21:28

标签: c# winforms .net-3.5

我有一个方法设置为几个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;
        }
}

谢谢!

1 个答案:

答案 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");
}