问题: 有没有办法始终让单击通过对表单产生影响而使表单成为焦点?
背景: 当我的(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/