我正在为应用程序开发一个插件,我必须注册我使用我的宿主应用程序创建的任何控件,否则它们不会收到任何消息并且被有效禁用。使用控件的窗口句柄执行注册。 (请将此部分视为一个给定的部分,这只是我需要的背景。)
为了做到这一点,对于我创建的每个winforms控件,我使用其HandleCreated
事件和HandleDestroyed
事件递归注册/取消注册控件的句柄及其拥有的任何子控件。
我可以使用ContextMenuStrip
执行相同的操作,这对于第一级项目来说很好,但是如果这些项目中的任何一个都有子菜单,我不知道如何获得子句柄-menu已经打开以便注册它。
ToolStripMenuItem
个对象继承自System.ComponentModel.Component
而不是System.Windows.Forms.Control
,因此他们没有.Handle
属性,也没有HandleCreated
和{{1} } events。
请参阅图像,了解我需要处理的窗口(创建时)。
答案 0 :(得分:2)
使用ToolStripMenuItem.DropDown.Handle
。