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.