[英]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.