Имеется: форма с кучкой контролов. По умолчанию переходим между полями кнопкой TAB.
Возник вопрос: а нельзя ли сделать переход по клавише Enter?
Как ни пытался, перехватываются любые кнопки, кроме Enter и некоторых других.
.NET - [решено] C#. Перехват нажатия Enter
-
Drongo
Re: .NET - [решено] C#. Перехват нажатия Enter
Delirium, Если на С++ пойдёт такая идея? В обработчике OnKeyPress компонента Edit по нажатию на Enter устанавливать SetFocus() для другого компонента, например Edit2 в Edit2 устанавливать для Edit3 или другого и так далее.
Код:
Код:
Код: Выделить всё
...
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key == VK_RETURN) {
Edit2->SetFocus();
}
}
...-
Delirium
Re: .NET - [решено] C#. Перехват нажатия Enter
Идея понятна, посмотрим, что получится и отпишусь. Минус только в том, что надо кучу раз прописывать данное действие, т.к. полей около 50.
Работает. Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
Работает. Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
-
Delirium
Re: .NET - [решено] C#. Перехват нажатия Enter
В итоге родилась небольшая функция:
Код:
В зависимости от значения параметра Properties.Settings.Default.FocusByEnter, включается или отключается возможность перехода по Enter. Значение меняется в настройках программы. Очень удобно стало
В событии KeyPress стало достаточно вызвать функцию:
Код:
Код:
Код: Выделить всё
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);-
Drongo
Re: .NET - [решено] C#. Перехват нажатия Enter
Цитата Delirium:
Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
Да-да-да, я тоже это уже заметил.
Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
.NET - [решено] C#. Перехват нажатия Enter
Да-да-да, я тоже это уже заметил.
