як поставити фокус на TextBox, коли форма завантажується?


156

У мене в текстовій програмі С # програма

Мені потрібно, що при запуску програми фокус буде приділено textBox

Я пробую це на Form_Load:

MyTextBox.Focus();

але це не буде працювати

Відповіді:


341

Встановіть ActiveControlвластивість форми, і вам повинно бути добре.

this.ActiveControl = yourtextboxname;

1
Я спробував це ComboBox. Але це також не працює!
Алекс Джоліг

1
Дякую, це працювало для мене там, де все інше не було. Не впевнений, чому Tab Index = 0 не буде працювати, але, ймовірно, дивний порядок операцій відбувається під час завантаження діалогу форми / показу.
Девід Керіган

1
Спробуй це >>> this.ActiveControl = вашетекстове ім'я.Control;
Поламін Сінгасувіч

3
Це чудово працює, але чому не вийшло MyTextBox.Focus();- це, здається, спрацює нормально, коли програма працює.
Левон

2
Пишіть this.ActiveControl = textBox1;Всі розуміють значення "textBox1". "youttextboxname" звучить як... = "MyTextBox";
Bitterblue

25

перевірте порядок вкладки та переконайтеся, що для текстового поля встановлено нуль


Робочий. Або просто tabindex бути першим курсовим "фокусируваним" елементом у формі.
apincik

15

Ви можете спробувати:

MyTextBox.Select ();

Відповідно до документації:

Метод Select активує елемент керування, якщо біт стилю елемента керування встановлено на true у ControlStyles, він міститься в іншому елементі управління, і всі його батьківські елементи керування є видимими та включеними.

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


15

Ви не можете встановити фокус на елемент керування, якщо він не був наданий. Form.Load () виникає до надання елементів управління.

Перейдіть до подій форми та двічі клацніть події "Показано". У показаному формі обробник події викликає метод control.Focus ().

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


6

Textbox.Focus()"Пробує", щоб встановити фокус на текстовому полі. У разі, якщо видимість елемента прихована, наприклад, Focus()не буде працювати. Тому переконайтеся, що ваш елемент видно перед викликом Focus().


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

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


3

використовувати форму показаної події та встановити

MyTextBox.Focus();

3

Встановіть значення властивості індексу Tab = 0, а потім у функції завантаження форми напишіть:

YourTextboxName.Focus();

Це спрацює.


2

Ви можете використовувати textBox1.select();або налаштування TabIndex у текстовому полі. TabIndex=0першочерговим.


Якщо ми називаємо textBox1.select (); у обробці події завантаження форми, він встановлює фокус у textBox1.
Тушар Р.

1

Встановіть Tabstop на True та TabIndex на мінімальний рівень, до якого слід зосередити увагу.

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


1

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



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();
    }

-5

У jquery встановіть фокус

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

або в Javascript ви можете зробити

window.onload = function() {
  document.getElementById("txtBox1").focus();
};

4
Це може бути хорошою відповіддю на запитання веб-сайту, але це позначено тегами c#і winforms.
Ben Voigt
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.