我对 C# 比较陌生。我有一个带按钮的窗口。如果窗口没有焦点并且我第一次单击按钮,第一次单击会为窗口获取焦点,所有后续单击将执行它们各自的操作。
有没有办法执行与按钮关联的事件而不是获取焦点?
最佳答案
听起来您正在描述 ToolStrip 的操作方式,除非应用程序具有焦点,否则不会触发点击事件。
解决方法是使用您自己的 ToolStrip 并让鼠标激活为控件提供焦点,然后让按钮触发其点击事件:
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);
}
}
重建您的解决方案,您应该会在工具箱中看到一个可用的 ToolStripIgnoreFocus
控件。尝试将其添加到您的表单中,然后相应地添加您的工具按钮。
关于c# - 无论我的表单是否具有焦点,我都可以确保我的控件捕获第一个事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11321086/