我有一个ContextMenuStrip
附加到更多的控件。ContextMenuStrip的SourceControl在ToolStripMenuItem中无效单击?
使用Opening
事件ContextMenuStrip
过滤/禁用某些上下文条目。 在这种情况下,物业ContexteMenuStrip.SourceControl
设置正确。
我遇到的问题是ToolStripMenuItem
的Click事件。此物品在ToolStripDropDown
之内。
我得到的父项的代码:
Dim tsmi As ToolStripMenuItem = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ToolStripDropDown).OwnerItem, ToolStripMenuItem)
然后我得到的ContextMenuStrip:
Dim contextMenu As ContextMenuStrip = DirectCast(tsmi.Owner, ContextMenuStrip)
但现在,如果我检查contextMenu.SourceControl
是Nothing
。
你知道什么是错的吗?或者为什么SourceControl没有在这种情况下设置?
预先感谢您
谢谢你,但我需要链接到文本菜单中SourceControl被点击的项目时,因为此菜单上更多的DataGridView实例重用。我不喜欢为每个DataGridView创建不同的ContextMenu。 – Drake 2010-06-23 09:10:44
对于每个表单对象,不需要有不同的ContextMenu。相反,只有一个ContextMenu。在窗体加载时,为每个对象添加一个Mouse.click处理程序,该处理程序调用一个方法,然后打开ContextMenu。你应该能够像那样完美地处理它。如果你真的需要源代码管理,实际上它是单击的表单对象,那么就有一个全局变量,比如“ObjectToOpenContextMenu”,它是通过右键单击处理程序设置的。这样,根据用户在上下文菜单中点击的内容,全局变量实际上是源控件。 – AndyPerfect 2010-06-23 14:47:25