как поставить фокус на TextBox при загрузке формы? - PullRequest
141 голосов
/ 06 июля 2011

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

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

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

MyTextBox.Focus();

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

Ответы [ 15 ]

314 голосов
/ 06 июля 2011

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

this.ActiveControl = yourtextboxname;
24 голосов
/ 06 июля 2011

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

14 голосов
/ 06 июля 2011

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

MyTextBox.Select ();

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

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

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

12 голосов
/ 06 июля 2011

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

10 голосов
/ 31 марта 2017

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

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

    private void myForm_Shown(object sender, EventArgs e)
    {
        // Call textbox's focus method
        txtMyTextbox.Focus();
    }
5 голосов
/ 15 марта 2013

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

4 голосов
/ 20 августа 2016

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

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

3 голосов
/ 09 октября 2015

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

MyTextBox.Focus();
2 голосов
/ 11 сентября 2018

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

YourTextboxName.Focus();

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...