【问题标题】:Get Tag property from ToolStripMenuItem and Button in click event handler从单击事件处理程序中的 ToolStripMenuItem 和 Button 获取 Tag 属性
【发布时间】:2011-02-10 22:21:28
【问题描述】:

我在几个 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;
        }
}

谢谢!

【问题讨论】:

    标签: c# winforms .net-3.5


    【解决方案1】:

    因为没有定义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");
    }
    

    【讨论】:

    • 谢谢!这样可行。我虽然 as 运算符只是另一种说法 (type)object
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 2019-01-04
    相关资源
    最近更新 更多