Захват нажатия клавиши / пусть пользователь выбирает свою собственную клавишу запуска / остановки

#vb.net

#vb.net

Вопрос:

В настоящее время у меня есть клавиша запуска для моего vb.net приложение жестко запрограммировано следующим образом:

 GetAsyncKeyState(Keys.F2)
 

Где vb.net sais «F2 как система.Windows.Формы.Клавиши = 113 » при наведении курсора мыши

Но я хочу, чтобы мои пользователи могли выбирать свой собственный ключ. Если я создам выпадающий список (combobox) и предварительно определю в нем некоторые варианты (например, ESC или F3), все эти варианты являются строками. Как я могу преобразовать эти строки в систему.Windows.Формы.Целое число ключей?

Кроме того, я бы хотел, чтобы также можно было «захватить» одно нажатие клавиши. Таким образом, они нажимают кнопку «Захват», и следующая клавиша, которую они нажмут, будет сохранена как кнопка запуска / остановки. Но я бы даже не знал, с чего начать поиск этого.

Ответ №1:

 If txtKeys.Text=="F3" Then
GetAsyncKeyState(Keys.F3)
End If
 

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

1. Похоже, что вы перевели с C # == недопустимо, и вам также нужен Then, т.Е. If txtKeys . Затем Text = «F3″…

Ответ №2:

Попробуйте что-то вроде этого:

 Public Class Form1
    Dim captureKey As Boolean
    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        captureKey = True
    End Sub

    Private Sub Button1_PreviewKeyDown(sender As Object, e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles Button1.PreviewKeyDown
        If captureKey Then
            Label1.Text = e.KeyValue.ToString
            captureKey = False
        End If

    End Sub
End Class
 

Я создал форму с меткой и кнопкой для примера. например. Значение ключа — это целое число, которое я преобразую в строку для целей отображения. У вас также есть возможность захватывать другие ключевые данные. Смотрите эту информацию в PreviewKeyDownEventArg

Что касается первой части вашего вопроса, используйте оператор Select Case для преобразования между вашими значениями ComboBox и значениями KeyData.