关于C#的弹出菜单 http://blog.csdn.net/lyg1166/article/details/1885293 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在contextMenuStrip1的Closed事件里面写button4.Tag = 2; 1楼是动态创建菜单的2楼的办法我也想过,实在没办法的话也许只能这样了。但这样终归不方便。TrackPopupMenu则是类似showdialog的效果。 它有Closed和Closing事件,可以在这里设置tag // 右键菜单 关闭之前发生 private void cs_Closing(object sender, ToolStripDropDownClosingEventArgs e) { } 你都 show了 等 show结束了 才 继续 执行 下面的 Closed等事件是最后不得已的办法,感谢各位。回复6楼:show并不会让代码暂停,我希望是showdialog的效果。TrackPopupMenu就会暂停 这需求本来就很奇葩.如果你是弹出的窗体,在关闭窗体时要从窗体中返回一些操作,那么需要用showdialog而菜单,本身就在当前窗体中,你要执行什么特定操作,等按下菜单对应选项的时候执行就好了啊为什么菜单关闭时还要再继续跑回click事件中?如果说菜单关闭时要统一执行特定方法,菜单有close事件,你放在事件里执行就行了. 在.NET之前,弹出菜单不都是用TrackPopupMenu的吗?而TrackPopupMenu就会暂停,直到菜单消失,所以我不觉得需求奇葩。在.NET之前,比如我要捕捉在菜单上的右键,则需要安装鼠标钩子,当我仅仅期望在弹出某个菜单的时候钩子才有效,那么流程就是1、安装钩子2、TrackPopupMenu显示菜单3、卸载钩子。这里仅仅是举例说明这个功能有其合理性。 不要老提.net之前在.net之前,你放个textbox在窗体上,还要在后台建立个变量,然后将变量绑定到textbox上去烦不烦?既然想用.net,就得适应.net的方便之处,不会因为弹出了个菜单就阻塞了主线程的执行. 看来方便是相对的,某个方面方便了则可能带来不方便的地方。个人觉得提供个showdialog似乎是最合适的…… 窗体弹出菜单private void 打开自窗体ToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f = new Form2();//创建窗体对象 f.MdiParent = this;//设置父窗体属性 f.Show();//显示窗体 f.Resize += //为窗体添加事件 new EventHandler(f_Resize); }void f_Resize(object sender, EventArgs e) { Form2 f = (Form2)sender;//得到窗体对象 ToolStripMenuItem item = new ToolStripMenuItem();//创建菜单项 for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//遍历窗体菜单项集合 { item.DropDownItems.Add(//添加菜单项 f.contextMenuStrip2.Items[i]); } this.contextMenuStrip1.Items.AddRange(//向主窗体中添加菜单项集合 new System.Windows.Forms.ToolStripItem[] { item}); } 如何用C#语言实现 文字“月亮”围绕文字“地球”转圈。 C#编写指纹识别软件 求助!实现类似芊芊静听的 频谱分析 视觉效果 和自动搜索歌词功能? 请问怎样在另一个form中加入processbar,来演示前一个form的运行情况? 6位号码QQ免费申请 请教高手一个有关数据库更新的问题 找人做毕业设计啊。流动人口数据仓库智能挖掘,会做的来啊,救命啊!! 如何在一个DataGrid中放置一列Combobox? C#怎样执行DOS批处理文件? 用C#接收邮件,怎样判断邮件是否为新邮件???望高手指点?? 新手救助,combox问题 C#操作数据库的问题
// 右键菜单 关闭之前发生
private void cs_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
}
如果你是弹出的窗体,在关闭窗体时要从窗体中返回一些操作,那么需要用showdialog
而菜单,本身就在当前窗体中,你要执行什么特定操作,等按下菜单对应选项的时候执行就好了啊
为什么菜单关闭时还要再继续跑回click事件中?如果说菜单关闭时要统一执行特定方法,菜单有close事件,你放在事件里执行就行了.
在.net之前,你放个textbox在窗体上,还要在后台建立个变量,然后将变量绑定到textbox上去
烦不烦?
既然想用.net,就得适应.net的方便之处,
不会因为弹出了个菜单就阻塞了主线程的执行.
private void 打开自窗体ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form2 f = new Form2();//创建窗体对象
f.MdiParent = this;//设置父窗体属性
f.Show();//显示窗体
f.Resize += //为窗体添加事件
new EventHandler(f_Resize);
}
void f_Resize(object sender, EventArgs e)
{
Form2 f = (Form2)sender;//得到窗体对象
ToolStripMenuItem item = new ToolStripMenuItem();//创建菜单项
for (int i = 0; i < f.contextMenuStrip2.Items.Count; )//遍历窗体菜单项集合
{
item.DropDownItems.Add(//添加菜单项
f.contextMenuStrip2.Items[i]);
}
this.contextMenuStrip1.Items.AddRange(//向主窗体中添加菜单项集合
new System.Windows.Forms.ToolStripItem[] {
item});
}