我使用以下示例在禁用按钮上方显示工具提示。
How can I show a tooltip on a disabled button?
该按钮位于面板内部,我将MouseMove事件附加到面板,而不是窗体本身。
令人惊讶的是,如果启用了按钮,则GetChildAtPoint返回null!该按钮仅在禁用时才返回。
我已经检查了按钮的位置,启用和禁用时按钮的位置相同,并且两次都是其面板。
要清楚;在所有控件上都将调用MouseMove事件,并且在其中具有GetChildAtPoint方法的用法。启用按钮后,将调用MouseMove,并且GetChildAtPoint返回null。禁用它时,将调用MouseMove,并且GetChildAtPoint返回该按钮。
我不明白为什么此代码有效。非常感谢任何帮助,谢谢。
最佳答案
您正在从WM_MOUSEMOVE调用GetChildAtPoint,它将被发送到鼠标下方的窗口。禁用的控件不会收到WM_MOUSEMOVE,因此它将发送给父级。启用的控件会自己获取消息,而父级则不会。
关于c# - GetChildAtPoint仅返回禁用的控件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4358535/