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

В моей программе на C # есть текстовое поле

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

Я пробую это на Form_Load:

MyTextBox.Focus();

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


person Gali    schedule 06.07.2011    source источник


Ответы (16)


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

this.ActiveControl = yourtextboxname;
person V4Vendetta    schedule 06.07.2011
comment
Я пробовал это для ComboBox. Но тоже не работает! - person Alex Jolig; 25.02.2015
comment
Спасибо, это сработало для меня, а все остальное - нет. Не уверен, почему Tab Index = 0 не будет работать, но, вероятно, происходит странный порядок операций при загрузке формы / отображении диалогового окна. - person David Carrigan; 16.09.2015
comment
мне показывает активный контроль. но он не работает функционально. :( - person b_in_U; 15.10.2015
comment
ПОПРОБУЙТЕ ЭТО ››› this.ActiveControl = yourtextboxname.Control; - person Polamin Singhasuwich; 14.09.2016
comment
Это отлично работает, но почему MyTextBox.Focus(); не сработало - кажется, что после запуска программы все работает нормально. - person Levon; 06.01.2017
comment
Пишите this.ActiveControl = textBox1; Все понимают значение textBox1. youttextboxname звучит как ... = "MyTextBox"; - person Bitterblue; 27.06.2018

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

person Spacemancraig    schedule 06.07.2011
comment
Работающий. Или просто tabindex, чтобы быть первым элементом формы, на котором фокусируется курсор. - person apincik; 22.05.2019

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

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

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

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

MyTextBox.Select ();

По документации:

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

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

person Neil Knight    schedule 06.07.2011

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

person Andy Johnson    schedule 06.07.2011

Причина, по которой вы не можете заставить его работать, заключается в том, что событие 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();
        }
    }
}
person Ben    schedule 20.08.2016

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

person GRC    schedule 15.03.2013

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

MyTextBox.Focus();
person Nitin...    schedule 09.10.2015

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

person Mehmet Taha Meral    schedule 04.10.2016

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

YourTextboxName.Focus();

Это будет работать.

person Shakaib Akhtar    schedule 11.09.2018

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

person user9248597    schedule 21.01.2018
comment
Если мы вызовем textBox1.select (); в обработчике события загрузки формы он устанавливает фокус в textBox1. - person Tushar R.; 11.11.2019

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

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

person Aparna Ratheesh    schedule 18.06.2018

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

person Muhafil Saiyed    schedule 01.12.2016

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

person Mustafa    schedule 04.09.2019

Наконец, я обнаружил проблему, с которой я использовал структуру metro, и все ваши решения не будут работать с metroTextBox, и все ваши решения будут работать с обычным textBox в load, show, visibility_change, events, даже если индекс вкладки = 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();
    }
person MarkLee    schedule 06.06.2020

В jquery установите фокус

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

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

window.onload = function() {
  document.getElementById("txtBox1").focus();
};
person Sudip Bhattacharya    schedule 01.12.2016
comment
Это может быть хорошим ответом на вопрос о веб-сайте, но он помечен тегами c# и winforms. - person Ben Voigt; 06.12.2016