【发布时间】:2012-10-01 09:14:44
【问题描述】:
我有一个ContextMenuStrip,其中一项具有DropDownItems 属性,它是动态添加的ToolStripMenuItem 对象的集合。当我处理子项Click 事件时,发送者的类型是ToolStripMenuItem,但它的Owner 是ToolStripDropDownMenu。我找不到如何从中确定“主机”ContextMenuStrip。它没有自己的Owner 属性,Parent 返回 null。
当我使用下面@Steve 发布的代码改编时:
Dim dropDownItem = DirectCast(sender, ToolStripDropDownItem)
Dim menu As ContextMenuStrip = DirectCast((((dropDownItem.DropDown).OwnerItem).OwnerItem).Owner, ContextMenuStrip)
Dim grid = menu.SourceControl
然后menu.SourceControl 是Nothing,但是当我处理顶级时,即非下拉菜单项的点击是这样的
Dim item As ToolStripMenuItem = DirectCast(sender, ToolStripMenuItem)
Dim strip As ContextMenuStrip = DirectCast(item.Owner, ContextMenuStrip)
Dim grid As DataGridView = DirectCast(strip.SourceControl, DataGridView)
然后我得到了我正在寻找的网格。
【问题讨论】:
标签: winforms contextmenu