Відповіді:
Встановіть ActiveControl
властивість форми, і вам повинно бути добре.
this.ActiveControl = yourtextboxname;
MyTextBox.Focus();
- це, здається, спрацює нормально, коли програма працює.
this.ActiveControl = textBox1;
Всі розуміють значення "textBox1". "youttextboxname" звучить як... = "MyTextBox";
Ви можете спробувати:
Відповідно до документації:
Метод Select активує елемент керування, якщо біт стилю елемента керування встановлено на true у ControlStyles, він міститься в іншому елементі управління, і всі його батьківські елементи керування є видимими та включеними.
Спочатку ви можете перевірити, чи можна вибрати керування, ознайомившись із властивістю MyTextBox.CanSelect .
Ви не можете встановити фокус на елемент керування, якщо він не був наданий. Form.Load () виникає до надання елементів управління.
Перейдіть до подій форми та двічі клацніть події "Показано". У показаному формі обробник події викликає метод control.Focus ().
private void myForm_Shown(object sender, EventArgs e)
{
// Call textbox's focus method
txtMyTextbox.Focus();
}
Якщо ви хочете встановити фокус лише вперше, коли форма відображається, спробуйте обробляти події Form.Shown і робити це там. В іншому випадку використовуйте Control.VisibleChanged .
Причина, по якій ви не можете змусити його працювати, полягає в тому, що 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();
}
}
}
Я вирішив свою проблему зі зміною властивості TextBox "TabIndex". Я встановив 0 для TextBox, що хочу сфокусувати його на Формі при запуску програми.
Встановіть значення властивості індексу Tab = 0, а потім у функції завантаження форми напишіть:
YourTextboxName.Focus();
Це спрацює.
Ви можете використовувати textBox1.select();
або налаштування TabIndex у текстовому полі. TabIndex=0
першочерговим.
Встановіть Tabstop на True та TabIndex на мінімальний рівень, до якого слід зосередити увагу.
Наприклад, якщо у вас є 2 TextBoxes: TextBox1 та TextBox2, встановіть Tabstop на True для обох, а TabIndex - 0 та 1 відповідно. Коли форма завантажується, фокус буде розміщено на TextBox1 та натисканні клавіші "Tab", фокус переміститься на TextBox2.
для мене це працює, встановивши tabindex на 0 this.yourtextbox.TabIndex = 0;
Нарешті я знайшов проблему, що використовував рамки метро, і всі ваші рішення не працюватимуть з metroTextBox, і всі ваші рішення працюватимуть із звичайними textBox при завантаженні, шоу, видимості_зміні, подіях, навіть індекс вкладки = 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();
}
У jquery встановіть фокус
$(function() {
$("#txtBox1").focus();
});
або в Javascript ви можете зробити
window.onload = function() {
document.getElementById("txtBox1").focus();
};
c#
і winforms
.
ComboBox
. Але це також не працює!