如何把ToolStripMenuItem的副本选入上下文菜单。。。?
原来的menuitem类有一个clonemenu方法,能把菜单项复制到上下文菜单中去,但是现在用MenuStrip却无法复制菜单了。用add添加的话类似剪切,根本不能实现...
原来的menuitem类有一个clonemenu方法,能把菜单项复制到上下文菜单中去,但是现在用MenuStrip却无法复制菜单了。用add添加的话类似剪切,根本不能实现动态选入上下文菜单。如果用手工制作一个副本再选入就不用告诉我了。。。
展开
展开全部
我曾研究并已解决了这个问题,在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.
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.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询