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