3

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

4

4 回答 4

10

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

public class ButtonEx : Button {
  public ButtonEx() {
    this.SetStyle(ControlStyles.Selectable, false);
  }
}
于 2012-04-09T19:08:38.283 回答
4

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

textBox1.Focus();

这将防止您的按钮在单击按钮时获得焦点。

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

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

于 2012-04-09T18:54:36.453 回答
0

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

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

private void FocusTextBox()
{
    textBox.Focus();
}
于 2012-04-09T18:41:02.700 回答
0

创建Button具有属性的自定义类Focusable,设置Focusablefalse

public class ButtonEx : Button
{
    [DefaultValue(true)]
    public bool Focusable
    {
        get { return GetStyle(ControlStyles.Selectable); }
        set { SetStyle(ControlStyles.Selectable, value); }
    }
}
于 2014-08-07T08:47:14.870 回答