как поставить фокус на TextBox при загрузке формы?

156

У меня в моей программе C # textBox

Мне нужно, чтобы при запуске программы фокус был на textBox

Я пытаюсь это на Form_Load:

MyTextBox.Focus();

но это не сработает

Гали
источник

Ответы:

341

Установите ActiveControlсвойство формы, и вы должны быть в порядке.

this.ActiveControl = yourtextboxname;
V4Vendetta
источник
1
Я попробовал это для ComboBox. Но это тоже не работает!
Алекс Джолиг
1
Спасибо, это сработало для меня, где все остальное не сделал. Не уверен, почему Tab Index = 0 не будет работать, но, вероятно, при загрузке формы / показа диалога происходит странный порядок операций.
Дэвид Кэрриган
1
ПОПРОБУЙТЕ ЭТО >>> this.ActiveControl = yourtextboxname.Control;
Поламин Сингхасвич
3
Это прекрасно работает, но почему не MyTextBox.Focus();работает - кажется, работает нормально, когда программа запущена.
Левон
2
Писать this.ActiveControl = textBox1;Каждый понимает значение слова «textBox1». "youttextboxname" звучит как... = "MyTextBox";
Bitterblue
25

проверьте порядок вкладок и убедитесь, что текстовое поле установлено на ноль

Spacemancraig
источник
Работает. Или просто tabindex, чтобы быть первым «фокусируемым» элементом курсора в форме.
apincik
15

Вы можете попробовать:

MyTextBox.Select ();

Согласно документации:

Метод Select активирует элемент управления, если в ControlStyles для бита стиля элемента управления установлено значение true, он содержится в другом элементе управления, и все его родительские элементы управления видимы и включены.

Сначала вы можете проверить, можно ли выбрать элемент управления, проверив свойство MyTextBox.CanSelect .

Нил Найт
источник
15

Вы не можете установить фокус на элемент управления, если он не был визуализирован. Form.Load () происходит до визуализации элементов управления.

Перейдите к событиям формы и дважды щелкните по событию «Показано». В показанном в форме обработчике события вызовите метод control.Focus ().

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }
DavidG
источник
12

Если вы хотите установить фокус только при первом показе формы, попробуйте обработать событие Form.Shown и сделать это там. В противном случае используйте Control.VisibleChanged .

Энди Джонсон
источник
6

Textbox.Focus()«Пытается» установить фокус на элементе текстового поля. В случае элемента видимость скрыта, например, Focus()не будет работать. Поэтому убедитесь, что ваш элемент виден перед вызовом Focus().

GRC
источник
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();
        }
    }
}
Бен
источник
4

Я решил свою проблему с изменением свойства "TabIndex" TextBox. Я установил 0 для TextBox, чтобы при запуске программы сосредоточить его на форме.

Мехмет Таха Мерал
источник
3

использовать форму показанного события и установить

MyTextBox.Focus();
Нитин ...
источник
3

Установите значение свойства Tab Tab = 0, а затем в функции загрузки формы напишите:

YourTextboxName.Focus();

Это сработает.

Шакаиб Ахтар
источник
2

Вы можете использовать textBox1.select();или TabIndex в настройках текстового поля . TabIndex=0сосредоточены в первую очередь.

user9248597
источник
Если мы вызываем textBox1.select (); в обработчике события загрузки формы он устанавливает фокус в textBox1.
Тушар Р.
1

Установите Tabstop на True и TabIndex на минимум для элемента управления, на котором вам нужно сосредоточиться.

Например, если у вас есть 2 TextBoxes: TextBox1 и TextBox2, установите Tabstop на True для обоих и TabIndex на 0 и 1 соответственно. Когда форма загрузится, фокус будет на TextBox1 и при нажатии клавиши «Tab» фокус переместится на TextBox2.

Апарна Ратиш
источник
1

в форме перейдите в свойства и убедитесь, что для свойства "TopMost" установлено значение true, что решит вашу проблему.

Мустафа
источник
0

это работает для меня, установите tabindex в 0 this.yourtextbox.TabIndex = 0;

Мухафил Сайед
источник
0

Наконец, я обнаружил проблему, которую использовал с помощью Metro Framework, и все ваши решения не будут работать с metroTextBox, и все ваши решения будут работать с обычным textBox в load, show, visibility_change, events, даже если tab tab = 0 действителен.

   // private void Form1_VisibleChanged(object sender, EventArgs e)
   // private void Form1__Shown(object sender, EventArgs e)
    private void Form1_Load(object sender, EventArgs e)
    {

        textBox1.Select();
        this.ActiveControl=textBox1;
        textBox1.Focus();
    }
MarkLee
источник
-5

В JQuery установить фокус

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

или в Javascript вы можете сделать

window.onload = function() {
  document.getElementById("txtBox1").focus();
};
Судип Бхаттачарья
источник
4
Это может быть хорошим ответом на вопрос веб-сайта, но этот тег c#и winforms.
Бен Фойгт