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