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控件,即可。