Показать полную графическую версию : [решено] C#. Перехват нажатия Enter
Delirium
26-02-2010, 08:55
Имеется: форма с кучкой контролов. По умолчанию переходим между полями кнопкой TAB.
Возник вопрос: а нельзя ли сделать переход по клавише Enter?
Как ни пытался, перехватываются любые кнопки, кроме Enter и некоторых других.
Delirium, Если на С++ пойдёт такая идея? В обработчике OnKeyPress компонента Edit по нажатию на Enter устанавливать SetFocus() для другого компонента, например Edit2 в Edit2 устанавливать для Edit3 или другого и так далее.
...
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key == VK_RETURN) {
Edit2->SetFocus();
}
}
...
Delirium
27-02-2010, 01:04
Идея понятна, посмотрим, что получится и отпишусь. Минус только в том, что надо кучу раз прописывать данное действие, т.к. полей около 50.
Работает. Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
Delirium
27-02-2010, 01:53
В итоге родилась небольшая функция:
private void ChangeFocus(KeyPressEventArgs e, Control ctrl)
{
if(Properties.Settings.Default.FocusByEnter == true)
{
if (e.KeyChar.ToString() == "\r")
ctrl.Focus();
}
}
В зависимости от значения параметра Properties.Settings.Default.FocusByEnter, включается или отключается возможность перехода по Enter. Значение меняется в настройках программы. Очень удобно стало :)
В событии KeyPress стало достаточно вызвать функцию: ChangeFocus(e, TextBoxFIO);
Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию. »Да-да-да, я тоже это уже заметил. :yes:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.