我对C#比较陌生.我有一个带按钮的窗口.如果窗口没有聚焦,我第一次点击按钮,第一次点击会抓住窗口的焦点,所有后续点击将执行各自的操作.
有没有办法执行与按钮关联的事件而不是抓住焦点?
Lar*_*ech 11
听起来您正在描述ToolStrips如何操作,除非应用程序具有焦点,否则不会触发单击事件.
解决方法是使用您自己的ToolStrip并让鼠标激活为控件提供焦点,然后让按钮触发它的click事件:
public class ToolStripIgnoreFocus : ToolStrip {
private const int WM_MOUSEACTIVATE = 0x21;
protected override void WndProc(ref Message m) {
if (m.Msg == WM_MOUSEACTIVATE && this.CanFocus && !this.Focused)
this.Focus();
base.WndProc(ref m);
}
}
Run Code Online (Sandbox Code Playgroud)
重建您的解决方案,您应该ToolStripIgnoreFocus在工具箱中看到可用的控件.尝试将其添加到表单中,然后相应地添加工具按钮.