.NET - [решено] C#. Перехват нажатия Enter

Ответить
Аватара пользователя
Delirium

.NET - [решено] C#. Перехват нажатия Enter

Сообщение Delirium »

Имеется: форма с кучкой контролов. По умолчанию переходим между полями кнопкой TAB.

Возник вопрос: а нельзя ли сделать переход по клавише Enter?

Как ни пытался, перехватываются любые кнопки, кроме Enter и некоторых других.
Аватара пользователя
Drongo

Re: .NET - [решено] C#. Перехват нажатия Enter

Сообщение Drongo »

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

Сообщение Delirium »

Идея понятна, посмотрим, что получится и отпишусь. Минус только в том, что надо кучу раз прописывать данное действие, т.к. полей около 50.



Работает. Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
Аватара пользователя
Delirium

Re: .NET - [решено] C#. Перехват нажатия Enter

Сообщение Delirium »

В итоге родилась небольшая функция:





Код:

Код: Выделить всё

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

Сообщение Drongo »

Цитата Delirium:



Единственное но: надо убрать у самой формы привязки к AcceptButton, иначе Enter всегда будет жать на кнопку по умолчанию.
.NET - [решено] C#. Перехват нажатия Enter




Да-да-да, я тоже это уже заметил. Изображение
Ответить

Вернуться в «Программирование и базы данных»