我在程序中动态生成了一个菜单,并且在菜单中定义了好几个Menuitem
把这些menuitem的事件定义成了一个事件
代码如下:
定义菜单:
private void CreatMenuItem()
{
  .....循环生成
  MenuItem mi =new MenuItem("M"+((string)dr["name1"]));
  mi.Text=(string)dr["name1"];
  mi.Click += new EventHandler(this.arg);
  ....
}
事件响应:
private void arg(object sender, System.EventArgs e)
{
//
}
所有的菜单item都公用一个事件处理程序,我要在事件处理程序中判定是哪个个菜单触发的事件
((MenuItem).sender).Text属性可以取出
但是MenuItem没有Name属性,大家知道怎么把MenuItem的Name属性取出来吗?

解决方案 »

  1.   

    再找找,肯定有关联的其它属性如Text
      

  2.   

    从MenuItem派生一个类来解决这个问题,需要用到MenuItem的地方都使用MyMenuItem来代替:using System.Windows.Forms;class MyMenuItem : MenuItem
    {
      string name;
      public string Name
      {
        get { return name;  }
        set { name = value; }
      }
    }
      

  3.   

    // 进一步,可以象 System.Windows.Forms.Control 类一样,实现一个通用的 Tag 属性
    // 还可以让继承类的类名也叫 MenuItem,只不过放在 Skyiv.Windows.Forms 命名空间
    // 使用时在源文件前面加上以下一行,就可以象以前一样使用 MenuItem 这个名字了,够酷吧?
    // using MenuItem = Skyiv.Windows.Forms.MenuItem;namespace Skyiv.Windows.Forms
    {
      class MenuItem : System.Windows.Forms.MenuItem
      {
        object tag  = null;
        string name = "";    public object Tag
        {
          get { return tag;  }
          set { tag = value; }
        }    public string Name
        {
          get { return name;  }
          set { name = value; }
        }
      }
    }
      

  4.   

    谢谢 wuyi8808(tm) studio 2005  :) 
    我先试试
      

  5.   

    谢谢 wuyi8808(tm) studio 2005  :)
    问题搞定了,结贴
    谢谢 wuyi8808(tm) studio 2005  :)能留个qq或msn吗交流一下别的问题?我会另开贴给你加分的
      

  6.   

    我的MSN已经在短消息中发给你了, 另开贴给你加分就不必了.