如何使用永远不会吸引键盘焦点的按钮创建一个winform

时间:2012-04-09 18:34:45

标签: winforms button keyboard focus

我的winform上有几个文本框。我也有几个按钮。现在,当我在一个这样的文本框上键入并单击一个按钮时,输入焦点将从文本框中丢失,按钮将获得输入键盘焦点。也就是说,一旦我们点击按钮,光标就会从文本框中丢失。我不想要这种行为。我希望我的文本框即使单击按钮也能保留光标。 真实情况是我只有触摸屏才能使用文本框和数字按钮。

4 个答案:

答案 0 :(得分:9)

尝试创建自己的按钮控件,该控件继承自标准按钮控件,但会关闭Selectable样式:

public class ButtonEx : Button {
  public ButtonEx() {
    this.SetStyle(ControlStyles.Selectable, false);
  }
}

答案 1 :(得分:4)

在按钮单击事件处理程序中,将焦点显式设置为其他控件。选择您认为在按下按钮后获得焦点的任何控件。例如,使用以下代码将焦点设置为TextBox:

textBox1.Focus();

这样可以防止按钮在单击按钮时获得焦点。

此外,将按钮的TabStop属性设置为false。

建议您将CanFocus属性设置为false的其他答案将不起作用,因为该属性对于按钮是只读的。

答案 2 :(得分:0)

您可以将焦点设置为按钮单击事件处理程序上的文本框,如下所示:

private void Button_Click(...)
{
    FocusTextBox();
    // Do things...
}

private void FocusTextBox()
{
    textBox.Focus();
}

答案 3 :(得分:0)

使用Button属性创建自定义Focusable课程,将Focusable设为false

public class ButtonEx : Button
{
    [DefaultValue(true)]
    public bool Focusable
    {
        get { return GetStyle(ControlStyles.Selectable); }
        set { SetStyle(ControlStyles.Selectable, value); }
    }
}