Windows Forms - Введення натискання клавіші активує кнопку подати?


95

Як я можу зафіксувати натискання клавіш у будь-якому місці моєї форми та змусити його активувати подію кнопки подання?


8
То чому б вам не натиснути властивість AcceptButton на відповідь Метта Гамільтона?
Мукус,

використовуйте 'this.Form.DefaultButton = MyButton.UniqueID;'
Біно Кочумол Варгезе

Відповіді:


196

Якщо ви встановите Formдля AcceptButtonвластивості '' одного з Buttons на Form, ви отримаєте таку поведінку за замовчуванням.

В іншому випадку встановіть для KeyPreviewвластивості trueзначення Formта обробляйте його KeyDownподію. Ви можете перевірити наявність Enterключа та вжити необхідних заходів.


8
і не забудьте про CancelButton для роботи з натисканням клавіші Escape
WholeLifeLearner

1
Дивовижно! Мені потрібно краще знати мого Framewrok;)
Джек,

24
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}

22

Ви можете призначити кнопку як "AcceptButton" у властивостях форми, і вона буде фіксувати будь-які натискання клавіш "Enter" у формі та направляти їх до цього елемента керування.

Див. Розділ « Призначення кнопки Windows Forms» як кнопки «Прийняти» за допомогою конструктора та зауважте кілька винятків, які вона окреслює (багаторядкові текстові поля тощо)


Дякую за посилання, ті винятки, де мене затримують.
ubiquibacon

Здається, це посилання померло.
JAD

10

Як уже зазначалося, встановіть у властивості форми AcceptButton одну з її кнопок І встановіть для властивості DialogResult для цієї кнопки значення DialogResult.OK , щоб абонент знав, прийнято чи відхилено діалогове вікно.


6

Ви можете підписатися на KeyUpподію TextBox.

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}

1
Саме те, що я шукав. У мене діалоговий результат кнопки встановлений у порядку, і я не хочу писати непотрібний код для роботи ENTER!
Kristjan1215

2

Форма має властивість KeyPreview, яку ви можете використовувати для перехоплення натискання клавіші.



0

Встановіть для атрибута KeyPreview у формі значення True, а потім використовуйте подію KeyPress на рівні форми, щоб виявити клавішу Enter. Під час виявлення зателефонуйте коду, який би ви мали для кнопки "надіслати".


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.