簡體   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