GetChildAtPoint仅返回禁用的控件?

时间:2010-12-05 11:23:38

标签: c# winforms tooltip

我正在使用以下示例在禁用按钮上方显示工具提示。 How can I show a tooltip on a disabled button?

按钮位于面板内部,我将MouseMove事件附加到面板,而不是表单本身。 令人惊讶的是,如果启用该按钮,GetChildAtPoint将返回null!该按钮仅在禁用时返回。 我已经检查了按钮的位置,它在启用和禁用时是相同的,并且它的父节点都是面板。

要清楚;在所有控件上调用MouseMove事件,在其中有一个用法在GetChildAtPoint方法中。启用该按钮后,将调用MouseMove,GetChildAtPoint将返回null。禁用时,将调用MouseMove,GetChildAtPoint将返回该按钮。

我不明白为什么这段代码有效。非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:5)

你正在从WM_MOUSEMOVE调用GetChildAtPoint,它被发送到鼠标下的窗口。已禁用的控件不会收到WM_MOUSEMOVE,因此会将其发送给父级。启用控件自己获取消息,父节点不能获取消息。