Как заставить сосредоточиться на элементе управления в виде окон

Я пытаюсь сфокусировать элемент управления "поиска" в приложении Windows Forms. Это текстовое поле находится внутри пользовательского элемента управления, который находится внутри панели, которая находится внутри формы окна (если это важно). Я пробовал 3 метода, которые я мог найти:

// 1
this.ActiveControl = myTextBox;

// 2
myTextBox.Focus();

// 3
myTextBox.Select();

Ни один из них не работает. Я имею в виду, например, когда я пытаюсь выполнить первый, активный элемент управления действительно установлен в myTextBox, но когда я пытаюсь что-то написать на клавиатуре, текстовое поле не принимает его, и я должен сначала щелкнуть внутри текстового поля, чтобы получить фокус. Это касается всех методов. Я что-то пропустил?

Ответ 1

Хорошо, наконец нашел ответ:

Как я уже сказал, мое текстовое поле находится внутри пользовательского элемента управления, который находится внутри панели, которая находится внутри формы. Когда мне нужен мой пользовательский контроль, я добавляю его в панель. Чтобы сосредоточиться на моем текстовом поле, я должен сначала сосредоточить свой пользовательский контроль так, как это: В моей верхней форме:

panel.Controls.Add(myUserControl);
myUserControl.Focus();

а затем в моем элементе управления пользователя:

myTextBox.Select();

Обратите внимание, что если я использовал: myTextBox.Focus(), это не сработало бы (не знаю почему). Также, если я использовал myUserControl.Select() вместо myUserControl.Focus(), он тоже не сработает.

Кажется, что это единственная комбинация.

Ответ 2

Вы можете выполнить следующие логические шаги, чтобы установить контроль над собой:

your_control.Select();
your_control.Focus();

Наслаждайтесь! :)