Я просто хочу предупредить, когда пользователь нажмет клавишу «Ввод».
Я пробовал это в событии keyup,
If e.KeyCode = Keys.Enter Then MsgBox("msg") End If
Это не сработало, это так?
Клавиша Enter имеет строго определенное использование в дизайне пользовательского интерфейса, она выполняет действие диалога «принять». В конструкторе выберите форму и установите AcceptButton для вашей кнопки. Код не требуется.
Обратите внимание, что кнопка CancelButton имеет аналогичное использование, она жестко связана с клавишей Escape.
Не полный ответ, но это может помочь. Вы можете заблокировать отправку основной формы, закрыв sub, если активен другой текстовый блок:
Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click ' do not submit anything in case that something else is active If txtItemPrompt.Focused() Then Exit Sub End If ' rest of the code End Sub
Вам необходимо установить для свойства keypreview формы значение true, если вы хотите видеть ключ ввода на уровне формы. В противном случае он будет поглощен тем элементом управления, который имеет фокус.
Просто нужно убедиться, что вы поместили код в подпрограмму, которая обрабатывает Me.KeyDown
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown If e.KeyCode = Keys.Enter Then MsgBox("Enter Pressed") End If End Sub
Это действительно зависит от контекста, к которому вы обращаетесь. Событие KeyUp будет запускаться только для определенного элемента управления и всплывать до его родительских элементов управления. Однако, если фокус не установлен на элементе управления, на котором вы обрабатываете событие, событие не сработает.