菜鸟妹妹急求救!!按钮的鼠标右键单击,出来个菜单,在点击菜单中的某项 怎么设置啊,给我一段程序吧,可以么?Convert.ToInt16(((Button)sender).Tag.ToString());这句话是什么意思啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 做一个ContextMenuStrip,假设叫ContextMenuStrip1,里面的每一个项目的动作先设置好对Button的MouseUp订阅一下if (e.Button == MouseButtons.Right)this.ContextMenuStrip1.show((Button)sender, 10, 10); 首先对楼上的表示感谢,我要把ContextMenuStrip动态绑定到几个按钮上,ContextMenuStrip中的动作都是一样的,可因为点击的按钮不同,触发的具体事件就不同,最好有代码 ContextMenuStrip里面的每一个项是一个ToolStripMenuItem,对于每一个Item都可以订阅事件你的问题的话我有3个想法:1、多做几个ContextMenuStrip,每个按钮调用不同的,这样事件也不同了2、自定义UserControl,继承于ContextMenuStrip,将每个Item的Click事件曝露出来让Form去订阅3、如果最终有多少个ContextMenuStrip还是固定的话,自定义UserControl,继承于ContextMenuStrip,增加一个函数,接收一个int型,根据这个int型判断是哪一个按钮调用了此控件,随后订阅事件第3种方法大概就是你一开始发的代码的写法了吧,而且那段代码是将这个int型放在了Button的Tag属性上,以免代码重复 楼上的,太感激你了, NewWorkSetForm.WorkID = Convert.ToInt16(((Button)sender).Tag.ToString());那我要是直接改一下这个代码呢,怎么改啊? 这一段代码的前提是自定义了一个控件叫FrmWorkSet,没有这个控件的话就没意义了...不过写这个控件也不能,在UserControl里加一个ContextMenuStrip再加几个函数调用的时候这段代码还真不用改 ASP.net微软验证用户输入的进程在哪里?即在.net报错之前或同时通知用户错误原因。望高手给与指点,不胜感激!!! int08h() 怎么给分啊,我要把 分给你 我也不知道~刚注册的...大概是这样的,继续自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里的委托是初始化了的,这决定于你要用的函数讲得不是很清楚 用ComboBox控件来编辑C#中ListView控件中数据,提示这个错误怎么解决?? 如何自定义数据类型 ?(在线急等) 关于读取文本内容到数据库问题(编码问题) c# winform 如何缓存加载后的treeview DotMsn2.0 文件传送挂死现象??? 想利用C#做一个winweb的程序,如何解决单击右键完成你想完成的操作。 由于工作需要:求 智能客户端 学习 讨论 qq 群!!! 请问如下两种写法有什么区别? 滚动条问题 简单问题!!!! 急!!!帮帮小妹:C#中的按钮的右键的属性怎么触发 关于相对路经的问题?
对Button的MouseUp订阅一下
if (e.Button == MouseButtons.Right)
this.ContextMenuStrip1.show((Button)sender, 10, 10);
你的问题的话我有3个想法:
1、多做几个ContextMenuStrip,每个按钮调用不同的,这样事件也不同了
2、自定义UserControl,继承于ContextMenuStrip,将每个Item的Click事件曝露出来让Form去订阅
3、如果最终有多少个ContextMenuStrip还是固定的话,自定义UserControl,继承于ContextMenuStrip,增加一个函数,接收一个int型,根据这个int型判断是哪一个按钮调用了此控件,随后订阅事件
第3种方法大概就是你一开始发的代码的写法了吧,而且那段代码是将这个int型放在了Button的Tag属性上,以免代码重复
NewWorkSetForm.WorkID = Convert.ToInt16(((Button)sender).Tag.ToString());
那我要是直接改一下这个代码呢,怎么改啊?
不过写这个控件也不能,在UserControl里加一个ContextMenuStrip再加几个函数
调用的时候这段代码还真不用改
大概是这样的,继续自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里的委托是初始化了的,这决定于你要用的函数讲得不是很清楚