C# ToolStrip在父窗體失去焦點時,點擊里面的按鈕無效


  C#里面ToolStrip控件,在父窗體失去焦點的情況下,第一次點擊ToolStrip上面的按鈕,只是讓父窗體獲得焦點,並不會引發按鈕的Click事件。要執行按鈕操作必須再點擊一次。相當於說,在父窗體失去焦點的情況,必須點擊兩次才能真正執行Click按鈕操作,相當不符合大眾的操作習慣。

  不過解決這個問題,其實也相當容易,只要自定義一個類,從系統的ToolStrip繼承,然后重寫它的WndProc方法即可。

public class ToolStripEx : ToolStrip
{
    protected override void WndProc(ref Message m)
    {
        const int WM_MOUSEACTIVATE = 0x21;

        if (m.Msg == WM_MOUSEACTIVATE && this.CanFocus && !this.Focused)
            this.Focus();

        base.WndProc(ref m);
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM