как поставить фокус на текстовое поле при загрузке формы?
У меня в моей программе C# textBox
Мне нужно, чтобы при запуске программы внимание было сосредоточено на текстовом поле
Я пробую это на Form_Load:
MyTextBox.Focus();
но это не будет работать
14 ответов:
установить
ActiveControl
свойства формы и вы должны быть хорошо.this.ActiveControl = yourtextboxname;
вы можете попробовать:
согласно документации:
метод Select активирует элемент управления, если элемент управления выбирается бит стиля имеет значение true в ControlStyles, он содержится в другом элемент управления и все его родительские элементы управления отображаются и включены.
вы можете сначала проверить, можно ли выбрать элемент управления, проверив MyTextBox.В соответствии места использования собственность.
Если вы хотите установить фокус только при первом отображении формы, попробуйте обработать форма.Показано событие и делать это там. В противном случае используйте управление.VisibleChanged.
вы не можете установить фокус на элемент управления, если она не была оказана. Форма.Load () происходит перед отображением элементов управления.
перейдите к событиям формы и дважды щелкните событие "показано". В показанном обработчике событий формы вызовите элемент управления.Фокус() метод.
private void myForm_Shown(object sender, EventArgs e) { // Call textbox's focus method txtMyTextbox.Focus(); }
Textbox.Focus()
"пытается" установить фокус на элементе textbox. В случае, если видимость элемента скрыта, например,Focus()
не будет работать. Поэтому убедитесь, что ваш элемент перед вызовомFocus()
.
причина вы не можете заставить его работать, потому что
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(); } } }
Я решил свою проблему с изменением свойства "TabIndex" текстового поля. Я установил 0 для текстового поля, которое я хочу сосредоточить на форме при запуске программы.
можно использовать
textBox1.select();
или TabIndex в настройках текстового поля.TabIndex=0
фокусируется первым.
установите Tabstop в True и TabIndex до минимума для элемента управления, на котором вам нужно сосредоточиться.
например, если у вас есть 2 текстовых поля : TextBox1 и TextBox2, установите Tabstop в True для обоих и TabIndex в 0 и 1 соответственно. Когда форма загружается, фокус будет на TextBox1 и при нажатии клавиши "Tab", фокус переместится на TextBox2.