WinForms相当于WPF的IsHitTestVisible
我有一个按钮覆盖,有一个标签作为孩子。 我将MouseEnter和Leave事件附加到按钮控件。
当鼠标进入标签时,按钮的事件无效(这很自然)。 我的问题是如何在不实际禁用标签的情况下禁用标签的命中测试。
我希望它保留它的颜色,我希望它能够改变颜色(例如按钮上的MouseEnter),但是当鼠标hover在标签上时,按钮上将考虑命中测试。
PS:我知道我可以在标签上添加鼠标输入和离开并处理这些情况,但我希望控件是自给自足的,这样如果参数在它之外变化(鼠标进入和离开的颜色),控件仍将是function正常。
在寻找其他信息的同时解决这个问题,并且不相信接受的答案是真的正确。
您可以扩展标签并更改WndProc中的hittest响应。 这些方面的东西:
public class HTTransparentLabel : Label { private const int WM_NCHITTEST = 0x84; private const int HTTRANSPARENT = -1; protected override void WndProc(ref Message message) { if ( message.Msg == (int)WM_NCHITTEST ) message.Result = (IntPtr)HTTRANSPARENT; else base.WndProc( ref message ); } }
简短的回答是,你做不到。 按钮和标签实际上都是窗口,因此当鼠标为另一个留下时,会生成mouseenter和mouseleave事件。
真正的问题是,为什么你需要一个按钮上的标签?
上述就是C#学习教程:WinForms相当于WPF的IsHitTestVisible分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/958666.html