c#工具菜單ToolStrip控件使用筆記


1.嵌套窗體界面點擊無觸發

主窗體上有一個工具菜單ToolStrip,在同一個界面嵌套了一個子窗體,當前焦點在子窗體內時,點擊ToolStrip上的按鈕,有點意外情況:必須雙擊才能觸發這個ToolStripButton的Click事件。

這是因為,第一次點擊,程序將父窗體獲得焦點,第二次點擊時(父窗體已處於焦點),才會觸發事件

有一個解決辦法,可參見:https://www.cnblogs.com/wzwyc/p/6292693.html

就是,自定義一個組件,繼承系統的ToolStrip。並寫下如下代碼:

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);
    }
}

然后,用ToolStripEx控件代替原來的ToolStrip控件,即可。

 


免責聲明!

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



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