同时激活表单和进程按钮单击?
我在C#中使用Windows窗体。
我有一个主窗体,其中包含几个包含toolStripButtons的工具栏。 使用包含数据的另一个表单后,主窗体失去焦点并单击toolStripButton不会触发OnClick事件:第一次单击激活主窗体,只有第二次单击实际按下按钮。 我需要用户只点击一次按钮才能触发Click事件,有关如何操作的任何想法? 谢谢。
笔记:
您需要做的是创建一个inheritanceToolStrip
并处理WndProc
。 这是一种方法。 还有其他人。
private class MyToolStrip : ToolStrip { private const uint WM_LBUTTONDOWN = 0x201; private const uint WM_LBUTTONUP = 0x202; private static bool down = false; protected override void WndProc(ref Message m) { if (m.Msg == WM_LBUTTONUP && !down) { m.Msg = (int)WM_LBUTTONDOWN; base.WndProc(ref m); m.Msg = (int)WM_LBUTTONUP; } if (m.Msg == WM_LBUTTONDOWN) down = true; if (m.Msg == WM_LBUTTONUP) down = false; base.WndProc(ref m); } }
我也见过这个解决方案:
protected override void WndProc(ref Message m) { // WM_MOUSEACTIVATE = 0x21 if (m.Msg == WM_MOUSEACTIVATE && this.CanFocus && !this.Focused) this.Focus(); base.WndProc(ref m); }
我在我工作的最后一个地方碰到了这个,我认为我提出的解决方案更像后者,但我无法访问我使用的确切代码。
如果你有没有边框的Form,所以这个逻辑适合你内置:)
上述就是C#学习教程:同时激活表单和进程按钮单击?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
form.FormBorderStyle = FormBorderStyle.None
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1042255.html