捕获控件外部的鼠标事件
本文关键字:鼠标 事件 外部 控件 | 更新日期: 2023-09-27 18:02:16
我想我的文本框关闭自己当我点击其他地方,我怎么能做到这一点?
我看到Control.Capture
似乎抓住鼠标事件,但它不起作用。
我也尝试了Control.Leave
和Control.LostFocus
事件,但它们只在我按tab键或单击另一个文本字段时触发。
结束的意思是将它从父元素中移除,但我认为这里最重要的是事件
处理WM_CAPTURECHANGED消息并检查文本框是否包含焦点,但它没有被捕获,如果是隐藏它。
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
const int WM_CAPTURECHANGED = 0x0215;
if (m.Msg == WM_CAPTURECHANGED)
{
if (!textBox1.Capture && textBox1.Focused && textBox1.Visible)
{
textBox1.Visible = false;
}
}
}