捕获控件外部的鼠标事件

本文关键字:鼠标 事件 外部 控件 | 更新日期: 2023-09-27 18:02:16

我想我的文本框关闭自己当我点击其他地方,我怎么能做到这一点?

我看到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;
        }
    }
}