我正在实现一个继承自Control
的自定义控件。我希望它可以被聚焦 (它是一种列表框)。
在构造函数中,我执行以下操作:
SetStyle(ControlStyles.Selectable, true);
现在我可以使用Tab键导航到控件。
然而,当控件接收到鼠标点击时,它并不会自动获得焦点。当然,我可以解决这个问题:
protected override void OnMouseDown(MouseEventArgs e)
{
Focus();
base.OnMouseDown(e);
}
但这种方法感觉像是一个不必要的补救措施。这真的是正确的方法吗?还是有一种方法可以告诉Control
在接收到鼠标点击时自动获取焦点?
OnGotFocus
和OnLostFocus
会使包含焦点矩形的矩形无效;OnPaint
检查Focused
属性并根据需要调用ControlPaint.DrawFocusRectangle
。 - Thomas