怎么设置啊,给我一段程序吧,可以么?
Convert.ToInt16(((Button)sender).Tag.ToString());
这句话是什么意思啊

解决方案 »

  1.   

    做一个ContextMenuStrip,假设叫ContextMenuStrip1,里面的每一个项目的动作先设置好
    对Button的MouseUp订阅一下
    if (e.Button == MouseButtons.Right)
    this.ContextMenuStrip1.show((Button)sender, 10, 10);
      

  2.   

    首先对楼上的表示感谢,我要把ContextMenuStrip动态绑定到几个按钮上,ContextMenuStrip中的动作都是一样的,可因为点击的按钮不同,触发的具体事件就不同,最好有代码
      

  3.   

    ContextMenuStrip里面的每一个项是一个ToolStripMenuItem,对于每一个Item都可以订阅事件
    你的问题的话我有3个想法:
    1、多做几个ContextMenuStrip,每个按钮调用不同的,这样事件也不同了
    2、自定义UserControl,继承于ContextMenuStrip,将每个Item的Click事件曝露出来让Form去订阅
    3、如果最终有多少个ContextMenuStrip还是固定的话,自定义UserControl,继承于ContextMenuStrip,增加一个函数,接收一个int型,根据这个int型判断是哪一个按钮调用了此控件,随后订阅事件
    第3种方法大概就是你一开始发的代码的写法了吧,而且那段代码是将这个int型放在了Button的Tag属性上,以免代码重复
      

  4.   

    楼上的,太感激你了,
     NewWorkSetForm.WorkID = Convert.ToInt16(((Button)sender).Tag.ToString());
    那我要是直接改一下这个代码呢,怎么改啊?
      

  5.   

    这一段代码的前提是自定义了一个控件叫FrmWorkSet,没有这个控件的话就没意义了...
    不过写这个控件也不能,在UserControl里加一个ContextMenuStrip再加几个函数
    调用的时候这段代码还真不用改
      

  6.   

    ASP.net微软验证用户输入的进程在哪里?即在.net报错之前或同时通知用户错误原因。望高手给与指点,不胜感激!!!
      

  7.   

    int08h() 怎么给分啊,我要把 分给你
      

  8.   

    我也不知道~刚注册的...
    大概是这样的,继续自ContextMenuItem的一个类,这个类是肯定包含Items[]属性的,现在增加一个ID属性,为int ID,再增加一个EventHandler[][] ClickFunc = new EventHandler[n][m],与Items一一对应,其中有几个按钮要用到这个东西就设n为多少,m的值等于Item的数量,随后增加public void SetEvent()
    {
                switch (ID)
                {
                    case 1:
    Item[i].Click += ClickFunc[0][i]
                        break;
                    case 2:
    Item[i].Click += ClickFunc[1][i]
                        break;
                    case 3:
    Item[i].Click += ClickFunc[2][i]
                        break;
    //依次类推
                }
    }当然最初ClickFunc里的委托是初始化了的,这决定于你要用的函数讲得不是很清楚