1

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

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

我可以用 a 做同样的事情ContextMenuStrip,这对于第一级项目来说很好,但是如果这些项目中有任何一个有子菜单,我不知道如何获取已打开的子菜单的句柄以便注册它。

ToolStripMenuItem对象继承自而System.ComponentModel.Component不是继承自System.Windows.Forms.Control,因此它们没有.Handle属性,也没有HandleCreatedHandleDestroyed事件。

请参阅图像以了解我需要处理哪个窗口(在创建时)。 在此处输入图像描述

4

1 回答 1

2

使用ToolStripMenuItem.DropDown.Handle.

于 2012-06-11T16:47:18.307 回答