Как настроить сочетание клавиш для кнопки

#vb.net #access-keys

#vb.net #клавиши доступа

Вопрос:

Кто-нибудь может помочь мне понять, как установить сочетание клавиш в следующем коде? Оно должно быть Alt X (Exit — это название кнопки). Я пытался cmd_Exit.text="amp;Exit" , но он напечатал «amp;», и сочетание клавиш не было настроено.

 Private Sub cmdExit_Click(sender As Object, e As EventArgs) Handles cmdExit.Click
    'cmdExit.Capture()
    Dim response = MsgBox("Are you sure you want to exit?", CType(MsgBoxStyle.YesNo   MsgBoxStyle.Exclamation, MsgBoxStyle), "Leaving?")
    If response = MsgBoxResult.Yes Then     'if yes exit the application
        Application.Exit()
    End If
End Sub
  

Ответ №1:

Вы можете проверить, что Alt X нажаты с помощью события keydown, а затем вызвать с его помощью свой модуль exit:

Обратите внимание, вам нужно, чтобы для KeyPreview было установлено значение True в вашей основной форме

 Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown
    If e.KeyCode = Keys.X AndAlso e.Modifiers = Keys.Alt Then
        e.Handled = True
        cmdExit_Click(sender, e) 'or cmdExit.PerformClick()
    End If
End Sub
  

Комментарии:

1. Для записи, в этом случае нет необходимости использовать Call ключевое слово, поскольку оно просто лишнее.

2. У меня это не работает. Работает только при изменении свойства поведения формы (включено: False). Когда я это делаю, моя форма становится непригодной для использования. Каково здесь решение?

3. Если элементы управления отключены, они не вызывают события

Ответ №2:

 set Form KeyPreview = True
  

(Событие) Form1_KeyDown

 If (e.KeyCode = Keys.F1) Then
    MessageBox.Show("TEST", Button1.Text)
End If
  

Ответ №3:

 Private Sub Form1_KeyDown(sender As Object, e As KeyEventArgs) Handles Me.KeyDown

    If e.KeyCode = Keys.X AndAlso e.Modifiers = Keys.Alt Then
        e.Handled = True
        cmdExit_Click(sender, e) 'or cmdExit.PerformClick()
    End If
End Sub
  

Комментарии:

1. Я предложил edi для исправления раздела кода. С вашей стороны было бы здорово описание кода, объясняющего, как он решает проблему?