Tho*_*mas 9 .net c# focus winforms
我正在实现一个继承自的自定义控件Control.我希望它是可聚焦的(它是一种列表框).
在构造函数中,我这样做
SetStyle(ControlStyles.Selectable, true);
Run Code Online (Sandbox Code Playgroud)
我现在可以使用Tab导航到控件.
但是,当控件收到鼠标单击时,它不会自动声明焦点.当然,我可以解决这个问题:
protected override void OnMouseDown(MouseEventArgs e)
{
Focus();
base.OnMouseDown(e);
}
Run Code Online (Sandbox Code Playgroud)
但这感觉就像一个不应该是必需的kludge.这真的是要走的路吗?或者有什么方法可以告诉Control您在收到鼠标点击时自动声明焦点?
拆解来救援!事实证明
SetStyle(ControlStyles.UserMouse, true);
Run Code Online (Sandbox Code Playgroud)
就可以了。
具有讽刺意味的是,我在文档中读到:
UserMouse:如果为 true,则控件将进行自己的鼠标处理,并且鼠标事件不由操作系统处理。
这似乎与我想要的完全相反,所以我只尝试将其设置为false...干得好,WinForms 文档。