0

我有一个ContextMenuStrip附加到更多控件。

在使用过滤/禁用某些上下文条目的Opening事件中。ContextMenuStrip在这种情况下,属性ContexteMenuStrip.SourceControl设置正确。

我遇到的问题是关于 a 的 Click 事件ToolStripMenuItem。此项目位于ToolStripDropDown.

我得到带有代码的父项:

Dim tsmi As ToolStripMenuItem = DirectCast(DirectCast(DirectCast(sender, ToolStripMenuItem).Owner, ToolStripDropDown).OwnerItem, ToolStripMenuItem)

然后我得到 ContextMenuStrip:

Dim contextMenu As ContextMenuStrip = DirectCast(tsmi.Owner, ContextMenuStrip)

但现在,如果我检查contextMenu.SourceControlNothing.

您是否知道在这种情况下出了什么问题或为什么未设置 SourceControl?

先感谢您

4

3 回答 3

1

我找到了一种解决方法,它并不是问题的真正答案。所以我会让它打开一段时间。

我使用该ContextMenuStrip Opening事件在本地存储源对象。

Private Sub contextGrid_Opening(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles contextGrid.Opening

  _ContextSourceGrid = DirectCast(contextGrid.SourceControl, DataGridView)

End Sub

并直接引用所有ToolStripMenuItem Click事件中保存的对象。

于 2010-06-28T13:27:41.540 回答
1

试试这个:

DirectCast(DirectCast(DirectCast(
    tsmi.Owner, System.Windows.Forms.ToolStrip).
    TopLevelControl, System.Windows.Forms.Control),
    System.Windows.Forms.ContextMenuStrip).SourceControl
于 2011-08-18T18:49:02.063 回答
0

几周前我也有同样的问题,实际上,没有人能弄清楚为什么会发生这种行为。看看我问的问题,我得到的解决方案效果很好。

于 2010-06-22T22:43:39.160 回答