如何把ToolStripMenuItem的副本选入上下文菜单。。。?

原来的menuitem类有一个clonemenu方法,能把菜单项复制到上下文菜单中去,但是现在用MenuStrip却无法复制菜单了。用add添加的话类似剪切,根本不能实现... 原来的menuitem类有一个clonemenu方法,能把菜单项复制到上下文菜单中去,但是现在用MenuStrip却无法复制菜单了。用add添加的话类似剪切,根本不能实现动态选入上下文菜单。如果用手工制作一个副本再选入就不用告诉我了。。。 展开
 我来答
atalentsoft
2007-12-14 · TA获得超过4989个赞
知道小有建树答主
回答量:690
采纳率:0%
帮助的人:0
展开全部
我曾研究并已解决了这个问题,在net framework 2中,
ContextMenuStrip可以很轻松的嵌入到MenuStrip以及ToolStripDropDown中,而相反ToolStripMenuItem却很难嵌入到ContextMenu中,因为一个ToolStripMenuItem只能属于一个ToolStrip中。

有两种解决方法,我一直在用第一种,因为这才有代码重利用真正意义。
方法一:
在ContextMenu的Opening,或ContextMenu中ToolStripMenuItem的DropDownOpening 事件中,临时将所需要的ToolStripMenuItem加入到ContextMenu中。这样上下文菜单就有了所需要的ToolStripMenuItem。
然后再在ContextMenu的Closing,或ContextMenu中ToolStripMenuItem的DropDownClosing 事件中,重新将新加的ToolStripMenuItem还原回去(把他们添加到原来的菜单中)。这样就可以保证,在使用ContextMenu时显示其他菜单的ToolStripMenuItem,然后在ContextMenu使用完后,这些ToolStripMenuItem在还原到原来的位置。

方法二
自己编一个函数,执行ToolStripMenuItem的深层拷贝,如果要拷贝的item比较少,请参考方法三。
函数的具体内容就是,新建一个ToolStripMenuItem,把要拷贝的ToolStripMenuItem中的所有字段复制一遍就行了。

方法三
直接在窗体编辑时,在ContextMenu中加入要拷贝的ToolStripMenuItem。

另外:学这部分知识时一定要弄懂ToolStrip,ToolStripItem,ToolStripDropDown,ToolStripDropDownItem,ToolStripControlHose,ContextMenuStrip,MenuStrip等许多类层次关系,一定要多看MSDN.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式