[英]Show a Form without stealing focus stopped working after a while
我創建了自己的具有特殊功能的屏幕鍵盤。 我正在使用override
方法ShowWithoutActivation
和CreateParams
來防止我的窗體獲得焦點(根據此stackoverflow問題 )。
protected override bool ShowWithoutActivation
{
get { return true; }
}
protected override CreateParams CreateParams
{
get
{
CreateParams param = base.CreateParams;
param.ExStyle |= 0x08000000;
return param;
}
}
但是經過幾次Hide()
和Show()
我的表單又可以重新聚焦了。 要修復它,我需要重新啟動應用程序,但這當然是較差的解決方案。 不重啟就可以嗎? 隱藏后不顯示焦點就顯示窗體無濟於事。 我的應用程序可以再次集中。
我注意到,在大多數情況下,它是隨機發生的,但是在其中一種情況下,總是這樣:如果在右鍵單擊托盤中的NotifyIcon后顯示我的應用程序,然后從ContextMenuStrip中選擇項目。 OnClick我只是簡單地調用show函數。
您需要點擊窗口嗎? 如果沒有,請嘗試以下方法:
protected override void WndProc(ref Message message)
{
switch (message.Msg)
{
case 0x84: // WM_NCHITTEST
message.Result = (IntPtr)(-1); // HTTRANSPARENT;
return;
}
base.WndProc(ref message);
return;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.