VB: Как я могу установить комбинацию клавиш для таймера / кнопки - PullRequest
0 голосов
/ 27 октября 2019

Как я могу установить комбинацию клавиш для таймера / кнопки, в основном у меня есть два события таймера, один Timer.Stop и Timer.Start. Я хочу сделать комбинацию клавиш при нажатии кнопки переключения функции (Пуск / Стоп). Пожалуйста, помогите, мне это действительно нужно.

1 Ответ

1 голос
/ 27 октября 2019

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

Public Class Form1
    Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress
        If e.KeyChar = Convert.ToChar(13) Then
            MsgBox("You pressed Enter")
        End If
    End Sub
End Class

Получайте удовольствие!


Вот правка, которая поможет вам с вашими формами:

Допустим, у вас есть основная форма («внешняя»), которая содержит одно «дочернее» окно. Я говорю «ребенок», но это не имеет ничего общего с наследованием, это просто формы.

Теперь вы хотите, чтобы нажатие клавиши отслеживалось «основной» формой, даже если фокус находится на «дочернем»сформироваться. Вот способ достижения ниндзя-эска. Это качество простое, но не самое элегантное. Тем не менее, он будет работать как задумано.

В «основной» форме вам необходимо отслеживать «дочернюю» форму таким образом, чтобы вы могли использовать ее события и открытое событие:

Public Class Main
    'modal variable to keep track of the child form
    Private WithEvents _childForm As Form

    'the rest of your main class goes here
End Class

Я не знаю, есть ли у вас только одна дочерняя форма или несколько, поэтому вы можете рассмотреть возможность использования Списка, если у вас более одной дочерней формы или их переменное число:

Private _childFormsList As New List(Of Form)

Теперь, каждый раз, когда вы открываете форму, вы должны обновлять модальные переменные в основном (я буду работать с предположением, что у вас есть только одна дочерняя форма за раз, чтобы упростить задачу):

_childForm = New ChildFormClass()
_childForm.Show()
'or whatever you're doing with the Form

Теперь вернитесь к этой строке ранее:

Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress

и добавьте соответствующее Событие из дочерней Формы:

Private Sub Form1_KeyPress(sender As Object, e As KeyPressEventArgs) Handles Me.KeyPress, _childForm.KeyPressed

И теперь это Событие сработает дляобе формы. Тем не менее, вам следует переименовать Sub, поскольку это будет не только Form1 (основная форма, как бы вы ее ни называли), которая будет срабатывать больше.

Я буду время от времени зависать, если у вас возникнут дополнительные вопросы.

...