获取ContextMenuStrip子菜单的句柄

时间:2012-06-11 16:42:44

标签: c# winforms contextmenu

我正在为应用程序开发一个插件,我必须注册我使用我的宿主应用程序创建的任何控件,否则它们不会收到任何消息并且被有效禁用。使用控件的窗口句柄执行注册。 (请将此部分视为一个给定的部分,这只是我需要的背景。)

为了做到这一点,对于我创建的每个winforms控件,我使用其HandleCreated事件和HandleDestroyed事件递归注册/取消注册控件的句柄及其拥有的任何子控件。

我可以使用ContextMenuStrip执行相同的操作,这对于第一级项目来说很好,但是如果这些项目中的任何一个都有子菜单,我不知道如何获得子句柄-menu已经打开以便注册它。

ToolStripMenuItem个对象继承自System.ComponentModel.Component而不是System.Windows.Forms.Control,因此他们没有.Handle属性,也没有HandleCreated和{{1} } events。

请参阅图像,了解我需要处理的窗口(创建时)。 enter image description here

1 个答案:

答案 0 :(得分:2)

使用ToolStripMenuItem.DropDown.Handle