#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 для исправления раздела кода. С вашей стороны было бы здорово описание кода, объясняющего, как он решает проблему?