捕获控件之外的鼠标事件

时间:2014-05-07 15:47:11

标签: c# winforms

当我点击其他地方时,我希望我的文本框关闭,我该怎么做?

我见过Control.Capture似乎抓住了鼠标事件,但它不起作用。

我还尝试了Control.LeaveControl.LostFocus个事件,但只有在我按Tab键或点击其他文字字段时才触发它们。

关闭我的意思是从它的父母那里删除它,但重要的是我认为这是事件

1 个答案:

答案 0 :(得分:1)

处理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;
        }
    }
}