winform 跨視窗點選

BugMaker`發表於2021-01-05

專案場景:

winform


問題描述:

父窗體失去焦點時,點選裡面的按鈕無效

原因分析:

點選第一次父窗體獲得焦點 點選第二次才能正常觸發按鈕事件


解決方案:

重寫它的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);
        }
    }

    public class MenuStripEx : MenuStrip
    {
        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);
        }
    }

相關文章