Нажмите Клавишу выхода для вызова метода

У Kyle есть правильный подход в том, чтобы спрашивать о взаимодействии. Нет никакого "корректного" ответа, не зная, каковы шаблоны использования, вероятно, будут.

Любое архитектурное решение - особенно на этом уровне - является компромиссом.

необходимо спросить себя:

  • , Какие сообщения должны быть переданы между системами?
  • , Какие типы данных должны быть совместно использованы?
  • там важное требование для поддержки объектов сложной модели, или будут примитивы +, массивы делают?
  • , каков объем данных?
  • , Как часто взаимодействия будут происходить?
  • , Какова приемлемая коммуникационная задержка?

, Пока у Вас не будет понимания ответов или потенциальных ответов, к тем вопросам, будет трудно выбрать архитектуру реализации. Как только мы знаем, какие факторы важны, будет намного легче выбрать более подходящих кандидатов реализации, которые отражают требования рабочей системы.

14
задан H. Pauwelyn 30 August 2015 в 17:38
поделиться

4 ответа

Я пишу приложение WinForms. Пользователь заполняет текстовое поле, и если он хочет удалить все, он просто нажимает клавишу esc на клавиатуре

Я думаю, вам нужно обработать событие KeyDown .

4
ответ дан 1 December 2019 в 06:21
поделиться

используйте событие OnKeyPress вашего текстового поля и в событии

if(e.KeyCode==Keys.Escape)
{
    yourTextBox.Text = string.Empty;
}
22
ответ дан 1 December 2019 в 06:21
поделиться

Вы пишете консольное приложение, приложение WinForms или что-то еще? Вы пытаетесь захватить клавишу ESC все время (независимо от окна / приложения в фокусе) или что-то еще?

Требуется больше контекста.

Если вы пишете консольное приложение, тогда вам следует начать с таких вещей, как Console.ReadKey ...

http://msdn.microsoft.com/en-us/library/system.console.readkey.aspx

1
ответ дан 1 December 2019 в 06:21
поделиться

Как уже упоминалось, обрабатывать событие KeyDown или KeyUp соответствующего элемента управления. Событие KeyPress будет работать и для клавиши Escape , но не сработает для некоторых клавиш, таких как Shift , Ctrl или ALt .

Если вы хотите выполнять эту функцию каждый раз, когда пользователь нажимает клавишу Escape , то вы, вероятно, захотите обработать событие в форме. Если вы сделаете это, вы, вероятно, также захотите установить для свойства формы KeyPreview значение true. Это позволит элементу управления Form получать событие, даже если фокус в данный момент находится внутри одного из дочерних элементов управления.

Если вы хотите, чтобы поведение было специфичным для элемента управления, например очистка текста в текстовом поле, которое в настоящее время имеет фокус затем следует обработать событие KeyDown или KeyUp элемента управления TextBox . Таким образом, ваш обработчик событий не будет запущен, если пользователь нажмет клавишу escape за пределами текстового поля.

В некоторых ситуациях вам может потребоваться запретить дочерним элементам управления обрабатывать то же событие, которое вы только что обработали. Вы можете использовать свойство SuppressKeyPress в классе KeyEventArgs , чтобы управлять этим поведением:

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Escape)
    {
        MessageBox.Show("Escape key pressed");

        // prevent child controls from handling this event as well
        e.SuppressKeyPress = true;
    }
}
14
ответ дан 1 December 2019 в 06:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: