当前位置:编程学习 > C#/ASP.NET >>

菜鸟妹妹急求救!!按钮的鼠标右键单击,出来个菜单,在点击菜单中的某项

if (e.Button == MouseButtons.Right )
                {
                    FrmWorkSet NewWorkSetForm = new FrmWorkSet();
                    NewWorkSetForm.WorkID = Convert.ToInt16(((Button)sender).Tag.ToString());
                    if (NewWorkSetForm.ShowDialog() == DialogResult.OK)
                    {
                        for (int i = this.flowLayoutPanel1.Controls.Count - 1; i > 1; i--)
                        {
                            flowLayoutPanel1.Controls.Remove(flowLayoutPanel1.Controls[i]);
                        }
                        this.IniWorkSet();

这个是按钮的鼠标右键单击。请问各位大哥
要是改成;按钮的鼠标右键单击后出来个菜单,在点击菜单中的某项
这句 NewWorkSetForm.WorkID = Convert.ToInt16(((Button)sender).Tag.ToString());
怎么改啊?
小妹刚参加工作,科长留的活,
不会做工作就没了.拜托,拜托!!
--------------------编程问答-------------------- 右健好像使用上下文菜单吧,直接设置就行
干吗做这种事呢?
--------------------编程问答-------------------- 怎么设置啊,给我一段程序吧,可以么?
Convert.ToInt16(((Button)sender).Tag.ToString());
这句话是什么意思啊 --------------------编程问答-------------------- 做一个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里的委托是初始化了的,这决定于你要用的函数

讲得不是很清楚
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,