是这样,我C#WINDOWS窗体中在一个列表中使用了contextMenu控件,其中有一个地方使用动态添加了二级菜单,但是不知道如何使用点击,希望高手指点:
比如:右击出现菜单    新增 
                      修改
                      指定==》动态添加名字(这里名字是读取数据库的,而且都是每次可能不一样)我动态添加的是this.menuItem3.MenuItems.Add(dr["name"].ToString());我运行过,名字是可以动态添加上去,但是,点击事件应该怎么处理。怎么样得到点击选择用中的人名。
希望大家告诉下!

解决方案 »

  1.   

    基本上是这样一个过程吧,根据实际情况,自己修改下吧private void frmMain_Load(object sender, EventArgs e)
    {
        List<string> list = new List<string>();
        list.Add("SubItem1");
        list.Add("SubItem2");
        list.Add("SubItem3");    ToolStripMenuItem myItem = new ToolStripMenuItem();
        myItem.Text = "test";
        foreach (string item in list)
        {
            ToolStripMenuItem mi = new ToolStripMenuItem(item);
            mi.Text = item;
            mi.Click += new EventHandler(CustomItem_Click);
            myItem.DropDownItems.Add(mi);
        }
        contextMenuStrip1.Items.Add(myItem);
    }private void CustomItem_Click(object sender, EventArgs e)
    {
        MessageBox.Show(((ToolStripMenuItem)sender).Text);
    }
      

  2.   

    我汗哪,难道不知道什么是举一反三吗我写个List<string>只不过是为了演示下效果,难道真的要我去连数据库,然后再foreach吗如果是用DataAdapter那就读到一个DataTable里再foreach遍历添加,如果是用DataReader那就直接while循环添加就行了,跟多少个子菜单项目有关系吗
      

  3.   

    但是你代码里的  ToolStripMenuItem  我写在程序里说没有定义啊!出错啊!
      

  4.   

    .NET1.1?都什么年代了,怎么还用这个版本啊我这里没有vs2003,所以直接用代码添加的ContextMenu 代码写出来,一是我测试用的,再就是为了演示效果,并不是让你复制过去直接用的,这里给你提供的只是思路,自己根据这个提示,分析一下如何用到自己的程序中去,根据实际情况而定private void frmMain_Load(object sender, EventArgs e)
    {
        List<string> list = new List<string>();
        list.Add("SubItem1");
        list.Add("SubItem2");
        list.Add("SubItem3");    ContextMenu cm = new ContextMenu();
        this.ContextMenu = cm;    MenuItem myItem = new MenuItem();
        myItem.Text = "test";
        foreach (string item in list)
        {
            MenuItem mi = new MenuItem(item);
            mi.Name = item;
            mi.Click += new EventHandler(CustomItem_Click);  //这里为子菜单添加Click事件
            myItem.MenuItems.Add(mi);
        }
        cm.MenuItems.Add(myItem);
    }private void CustomItem_Click(object sender, EventArgs e)
    {
        //根据sender的Name属性来区分是点了哪个了菜单,写相应的事件处理代码
        MessageBox.Show(((MenuItem)sender).Name);
    }