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

sol*_*arc 3 c# .net-3.5 winforms

我有一个方法设置为几个按钮和ToolStripMenuItems中的单击事件处理程序.

我想获取发件人的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;
        }
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

ito*_*son 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");
}
Run Code Online (Sandbox Code Playgroud)