[英]Capture mouse events outside of the control
我希望我的文本框在我单击其他位置时自行关闭,该怎么办?
我已经看到了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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.