Подтвердить что ты не робот

Как вы получаете ключ ESC для закрытия диалога в Winforms?

Часто при использовании программного обеспечения в эти дни клавиша ESC закрывает диалог, не сохраняя никаких изменений, которые я сделал. Мне это особенно нравится, потому что хотя в диалоговом окне может быть кнопка отмены, я не обязательно хочу, чтобы мы нажали кнопку мыши или вкладку на кнопку отмены. Это хороший чистый способ сказать: "Ой, не хотел этого делать!" к программному обеспечению. На самом деле, я нахожу, что меня раздражает программное обеспечение, которое не реализует эту функцию, и я не могу поверить, что это еще не сделано под капотом Winforms - кажется мне интуитивным...

Я посмотрел на подключение к событию Form KeyPress или пытаюсь смоделировать "Отменить" DialogResult и т.д. Кажется, есть несколько способов обойти это...

Итак, вопрос: какой самый чистый способ привязать ключ ESC для закрытия диалога без сохранения каких-либо изменений?

Любая помощь от тех, у кого есть опыт в этом, очень ценится!

4b9b3361

Ответ 1

Задайте свойство CancelButton формы для ссылки на кнопку "Отмена".

Ответ 2

Чтобы сделать это, когда у вас нет кнопки отмены, вы можете переопределить processcmdkey:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
  if (keyData == Keys.Escape)
  {
    this.Close();
    return true;
  }
  return base.ProcessCmdKey(ref msg, keyData);
}

Ответ 3

Вы также можете установить свойство CancelButton формы на кнопку отмены:

this.CancelButton = this.cancelButton;

В Visual Studio вы можете установить это через Свойства формы, и код добавляется в файл Form.Designer.cs.

Ответ 4

В определенной степени это зависит от вашей среды разработки - в .NET, встроенной в нее (как это было в vb.old), у форм есть свойство "Отменить кнопку". Если это свойство установлено, кнопка "щелкнула" 'всякий раз, когда пользователь нажимает клавишу "ESC".

Для ключа 'ENTER' имеется соответствующее свойство "AcceptButton".

Из памяти стандартные сообщения и диалоговые окна по умолчанию будут следовать приведенной выше логике - хотя, конечно, можно указать кнопку по умолчанию для окна сообщения, в котором вы не хотите, чтобы что-то происходило без пользователя, положительно утверждающего, что то, что они хочу сделать.

Ответ 5

Вы можете сделать это:

button b = new button();
b.click = button_click;
this.cancelbutton = b;


protected void button_click(object sender,eventargs e)
{
    this.close();
}

Ответ 6

    If e.KeyCode = Keys.Escape Then
        If MsgBox("Are you sure to exit system (Y/N) ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question) = MsgBoxResult.No Then Exit Sub
        dashboard.Close()

    ElseIf e.KeyCode = Keys.F5 Then
        MessageBox.Show("F5")
    End If

Попробуйте этих парней. Это For Show messageBox для подтверждения Yes или No Before Closing. Forms. Вы можете добавить этот код в свою форму внутри формы Event с именем Keydown. Здесь "приборная панель" - это название нашей формы, которая будет закрыта. Этот код показывает вам окно с кнопками "Да" или "Нет". Если вы выберите "Да", значит, он закроет вашу форму. Если вы выберите "Нет", действие отменяет действие. Форма остается той же