簡體   English   中英

顯示表格但沒有竊取焦點過一會兒就停止工作

[英]Show a Form without stealing focus stopped working after a while

我創建了自己的具有特殊功能的屏幕鍵盤。 我正在使用override方法ShowWithoutActivationCreateParams來防止我的窗體獲得焦點(根據此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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM