windows - 聚焦表单上的点击丢失

标签 windows winforms focus click

问题: 有没有办法始终让单击通过对表单产生影响而使表单成为焦点?

背景: 当我的(C# win 表单)应用程序失去焦点时,我可以将鼠标悬停在表单上并获取指示鼠标所在位置的阴影和边框。

例如,单击菜单项(文件),表单将获得焦点,但文件菜单不会被单击。这需要额外的点击。

对于表单上的普通按钮,只需单击一次。

最佳答案

可以通过在单击发生之前设置焦点来解决此问题。 Se代码:

class ToolStripEx : System.Windows.Forms.ToolStrip
{
    protected override void WndProc(ref Message m)
    {
        // WM_MOUSEACTIVATE = 0x21
        if (m.Msg == 0x21 && this.CanFocus && !this.Focused)
        {
            this.Focus();
        }
        base.WndProc(ref m);
    }
}

此方法也适用于 MenuStrip

关于windows - 聚焦表单上的点击丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958756/

相关文章:

windows - 使用 Windows 8 SDK 为 Windows 7 编译

.net - 总是使用 Form.Invoke() 是一种不好的做法吗?

jquery - 动态突出显示列表项而不突出显示其子项

Android,Admob/Adview takes|steals focus from edittext,如何预防?

java - JFrame 在图标化时监听 KeyEvent

java - 针对特定于操作系统的 JRE 进行编码

ios - "Signing Key Required"- 是否可以在 Windows 上使用 DreamWeaver CS6 Extended/PhoneGap 创建 iOS 应用程序?

windows - Inno Setup 总是安装到管理员的 AppData 目录中

c# - 删除数据表中的行 -> DeletedRowInaccessible

c# - 自定义控件 - 属性框中的可单击链接