winform 跨窗口点击

项目场景:

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

你可能感兴趣的:(项目笔记,winform)