繁体   English   中英

在控件之外捕获鼠标事件

[英]Capture mouse events outside of the control

我希望我的文本框在我单击其他位置时自行关闭,该怎么办?

我已经看到了Control.Capture ,它似乎抓住了鼠标事件,但是没有用。

我也尝试了Control.LeaveControl.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM