Я стараюсь использовать мышь как можно меньше, и для этого мне нужно знать, есть ли способ изменить управление при нажатии клавиши Enter
.
У меня есть идея, что если я нахожусь в форме с несколькими элементами управления, я в основном использую элементы управления типа, TextBox
но я мог бы иметь DateTimePickers
или ComboBox
; чтобы при нажатии Enter
переходить к следующему элементу управления, используя тот порядок, который им задан при их создании в форме со свойством TabIndex
.
private void txtOrdenServicio_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)13)
{
Cargar_OrdenesServicio();
txtRazonTrabajo.Focus();
}
}
В предыдущем коде я поместил его в одно из событий KeyPress
, но если бы у меня было 10, мне TextBox
пришлось бы разместить следующий элемент управления вручную. Я работаю с Windows Form.
Есть ли способ достичь этого прыжка?
Чтобы перейти к другому элементу управления, вам просто нужно обработать событие
OnKeydown
элемента управления, с которым вы хотите работать.Пример:
Или пример 2:
Если ваш метод
Cargar_OrdenesServicio();
выполняет какое-либо действие над элементом управления при изменении его значения в тексте, я рекомендую вам поместить указанный вызов внутрь событияOnTextChanged
.В VB.NET то, что вы хотите, было бы немного проще реализовать, потому что вы можете обрабатывать разные неподписанные события из одного и того же метода, но С# не поддерживает реализацию события, если у него нет требуемой подписи, для событий типа
Key
требуемый подпись содержит следующее:Тем не менее, вы можете реализовать один и тот же метод для всех элементов управления, которые поддерживают событие
OnKeyDown
из браузера событий:Сигнатуры и перегрузки , если вы хотите понять немного больше, чем я упомянул.
Я надеюсь, что это помогло вам.
Ключевым моментом является использование GetNextControl (), с помощью которого вы сможете узнать, какой следующий элемент управления должен взять на себя фокус.
Использование клавиши Enter в качестве вкладки
как вы увидите нажатие клавиши, вы определяете его на уровне формы, чтобы сделать его глобальным
Вы также можете рассмотреть возможность использования Form.ProcessCmdKey для более общего управления ключами формы.
Для правильной работы важно, чтобы вы использовали событие PreviewKeyDown.
'''
'''