C# Winform设置焦点focus(textbox)和全选

有的时候,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

原文地址:https://www.cnblogs.com/fps2tao/p/14689643.html