如何在表单加载时将焦点放在TextBox上?

Gal*_*ali 146 c# winforms

我在我的C#程序textBox中

我需要在程序启动时,焦点将放在textBox上

我在Form_Load上尝试这个:

MyTextBox.Focus();
Run Code Online (Sandbox Code Playgroud)

但它不会工作

V4V*_*tta 325

设置ActiveControl表单的属性,你应该没问题.

this.ActiveControl = yourtextboxname;
Run Code Online (Sandbox Code Playgroud)

  • 这很好用,但为什么没有`MyTextBox.Focus();`工作 - 一旦程序运行似乎工作正常. (3认同)
  • 我为“ComboBox”尝试过这个。但也行不通! (2认同)
  • 写`this.ActiveControl = textBox1;`每个人都理解"textBox1"的含义."youttextboxname"听起来像`... ="MyTextBox";` (2认同)

Spa*_*aig 25

检查选项卡顺序并确保文本框设置为零


Nei*_*ght 14

你可以尝试:

MyTextBox.Select();

根据文件:

如果控件的可选样式位在ControlStyles中设置为true,则Select方法将激活控件,它包含在另一个控件中,并且其所有父控件都可见并启用.

您可以通过检查MyTextBox.CanSelect属性来检查是否可以选择控件.

  • 不,它只显示为选择.不工作 (2认同)

Dav*_*idG 13

如果尚未渲染,则无法将焦点设置为控件.Form.Load()在呈现控件之前发生.

转到表单的事件,然后双击"已显示"事件.在窗体的显示事件处理程序中调用control.Focus()方法.

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }
Run Code Online (Sandbox Code Playgroud)


And*_*son 12

如果您只想在第一次显示表单时设置焦点,请尝试处理Form.Shown事件并在那里执行.否则使用Control.VisibleChanged.


小智 6

Textbox.Focus()"尝试"将焦点设置在文本框元素上.例如,如果元素可见性被隐藏,Focus()则无法工作.因此,请确保在调用之前您的元素是可见的Focus().


Ben*_*Ben 5

之所以无法使其正常工作,是因为该Load事件是在绘制或呈现表单之前调用的。

这就像告诉披萨店如何制作披萨,然后要求他们向您发送一张照片,说明披萨制作之前披萨上有多少意大利辣香肠。

using System;
using System.Windows.Forms;

namespace Testing
{
    public partial class TestForm : Form
    {
        public TestForm()
        {
            InitializeComponent();

            Load += TestForm_Load;

            VisibleChanged += TestForm_VisibleChanged;

            Shown += TestForm_Shown;

            Show();

        }

        private void TestForm_Load(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_VisibleChanged(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called before the form is rendered.");
        }

        private void TestForm_Shown(object sender, EventArgs e)
        {
            MessageBox.Show("This event is called after the form is rendered.");
            txtFirstName.Focus();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Meh*_*ral 5

我通过更改 TextBox 的“TabIndex”属性解决了问题。我为 TextBox 设置了 0,我想在程序启动时将其聚焦在 Form 上。