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

时间:2011-07-06 13:29:06

标签: c# winforms

我的C#程序文本框

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

我在Form_Load上尝试这个:

MyTextBox.Focus();

但它无法正常工作

17 个答案:

答案 0 :(得分:310)

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

this.ActiveControl = yourtextboxname;

答案 1 :(得分:23)

检查您的标签顺序,并确保文本框设置为零

答案 2 :(得分:13)

你可以尝试:

MyTextBox.Select();

根据文件:

  

如果控件的Selectable,则Select方法激活控件   在ControlStyles中,style bit设置为true,它包含在另一个中   控件及其所有父控件都可见并启用。

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

答案 3 :(得分:12)

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

答案 4 :(得分:10)

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

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

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

答案 5 :(得分:5)

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

答案 6 :(得分:4)

您无法使其工作的原因是因为在绘制或呈现表单之前调用了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();
        }
    }
}

答案 7 :(得分:3)

使用表单显示事件并设置

MyTextBox.Focus();

答案 8 :(得分:3)

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

答案 9 :(得分:2)

设置Tab索引属性的值= 0,然后在窗体加载函数中写入:

YourTextboxName.Focus();

它将起作用。

答案 10 :(得分:0)

最后,我发现我正在使用Metro框架的问题,您所有的解决方案都不能与metroTextBox一起使用,并且您所有的解决方案都可以与普通textBox一起使用 在load,show,visible_change,events中,即使选项卡索引= 0也有效。

var Adapter_ = ArrayAdapter.CreateFromResource(this, Resource.Array.calibre_array, Android.Resource.Layout.SimpleSpinnerItem);

答案 11 :(得分:0)

在表单上,​​转到属性,并确保将“ TopMost”属性设置为true, 可以解决您的问题。

答案 12 :(得分:0)

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

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

我喜欢...谢谢!

答案 13 :(得分:0)

将Tabstop设置为True,并将TabIndex设置为您需要关注的控件的最小值。

e.g。如果您有2个TextBox:TextBox1和TextBox2,则将Tabstop设置为True,将TabIndex设置为0和1。当表单加载时,焦点将放在TextBox1上并按下' Tab'键,焦点将移动到TextBox2。

答案 14 :(得分:0)

您可以在文本框设置中使用textBox1.select(); TabIndex TabIndex=0首先展开。

答案 15 :(得分:0)

它对我有用 将tabindex设置为0 this.yourtextbox.TabIndex = 0;

答案 16 :(得分:-5)

在jquery中设置焦点

$(function() {
  $("#txtBox1").focus();
});

或在Javascript中你可以做到

window.onload = function() {
  document.getElementById("txtBox1").focus();
};