在Windows窗体上,将Tab焦点设置到按钮上

3

我创建了一个Outlook插件,在某个时刻会显示一个带有四个按钮的Windows窗体。我尝试将焦点默认设置为第一个按钮,但是当我在启动时将此按钮设置为焦点时,视觉上的“选定”边框不会出现在该按钮周围。

有什么办法可以实现这一点吗?


一个按钮有四种边框。这取决于按钮是否聚焦以及它是否是默认的UI按钮的组合。如果TabIndex属性或Select()方法不能得到你喜欢的边框,那么很可能你正在寻找表单的AcceptButton属性。 - Hans Passant
相关问题?C# Winforms复选框未指示焦点 - C-Pound Guru
1个回答

4
您可以使用以下任一选项在表单的Load事件中将焦点设置在控件上:
  • this.ActiveControl = this.button1;
  • this.button1.Select();
  • this.Show(); this.button1.Focus();
您可以在表单的Load事件中使用Control.Focus方法,仅在将表单的Visible属性设置为true后才在控件上设置焦点。
选择按钮后,按钮的边框将以显示它是活动控件的方式绘制,但不会绘制焦点提示。 作为一个快速而简单的解决方法,您可以向表单发送TabShift+Tab
SendKeys.SendWait("{TAB}");
SendKeys.SendWait("+{TAB}");

如果你想改变在代码中或使用鼠标选择按钮时的标准行为以查看焦点提示,你可以创建自己的按钮类继承并重写其ShowFocusCues方法以返回Focused值。你可以在这里了解更多信息。
public class MyCustomButton : Button
{
    protected override bool ShowFocusCues
    {
        get { return this.Focused; }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接