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

 

posted on 2020-01-08 22:04  云梦鸿  阅读(3028)  评论(0编辑  收藏  举报