Как заставить сосредоточиться на элементе управления в виде окон
Я пытаюсь сфокусировать элемент управления "поиска" в приложении 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();
Наслаждайтесь! :)