有的时候,Winform 中的 textbox 会自动聚焦;有的时候,textbox 又不会;为什么会出现这种情况呢?这与 textbox 聚焦的方式之一相关,当 textbox 被第一个拉到 Form 窗体时,textbox 会自动聚焦,反之不会,具体原因将在下文介绍。
C# Winform设置焦点有两种方法,一种是用 Focus() 方法实现,另一种是通过控件索引实现,下面就分别介绍这两种方法具体实现步骤或代码。
一、C# Winform设置焦点方法一:Focus 方法
1、使用 textbox 的 Focus() 方法,需要在窗体的的 Activated 事件中写代码。首先为窗体(Form1)添加 Activated 事件,展开右边的“属性”窗口,如图1所示:
图1
选择“事件”图标,在 Activated 右边输入 Form1_Activated,单击任意处则打开窗体后台代码文件。
2、在 Form1_Activated 事件中添加如下代码:
private void Form1_Activated(object sender, EventArgs e){
textBox1.Focus();//textbox 聚焦
}
这样,打开窗体 Form1,textbox焦点就会自动出现。
二、C# Winform设置焦点方法二:设置 tabindex 索引
如果把 textbox 的 tabindex 设置为0,则该 textbox 会自动聚焦,这就是我们有时并未设置 textbox 聚焦,却会自动出现光标的原因。一般来说,textbox 被第一个拉到窗体中,则它的 tabindex 就是0。设置 tabindex 为 0 的方法如下:
1、选中 textbox,展开右边的“属性”窗口,找到 TabIndex,如图2所示:
图2
2、在 TabIndex 右边输入 0,运行程序,textbox焦点就会出现。
三、textbox 设置焦点注意问题
1、textbox 必须显示(即 Visible 为 True)与启用(即 Enabled 为 True),焦点(光标)才会出现。
2、用 textbox.Focus()方法设置焦点,不能把代码写到窗体载入事件(即 Form1_Load),否则无效。
四.全选问题
添加事件 Enter
private void textBox1_Enter(object sender, EventArgs e) { BeginInvoke((Action)delegate { (sender as TextBox).SelectAll(); }); }
转: http://www.liangshunet.com/ca/201407/957165979.htm
https://blog.csdn.net/weixin_30475039/article/details/99209039