2017-01-18 2 views
-1

Так я кодирование этого проекта, который имеет CheckBox, что делает его таким образом, что если CheckBox проверяется, он начинает Timer и Timer получает состояние левой кнопки мыши. По какой-то причине, когда я нажимаю левый клик, asynckeystate берет его, а затем он начинает Timer 1, по какой-то причине, когда я нажимаю его, он НЕОБХОДИМО застревает, хотя я уже отпустил левый клик.левой кнопкой мыши GetAsyncKeyState застрять

Может ли кто-нибудь помочь?

If CheckBox2.Checked = True Then 
    Me.KeyPreview = True 
    Timer3.Enabled = True 
Else 
    Me.KeyPreview = False 
End If 

End Sub 
Private Sub Timer3_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick 
    hotkey = GetAsyncKeyState(Keys.LButton) 
    If hotkey = True Then 
     Timer1.Start() 
    Else 
     Timer1.Stop() 
    End If 
End Sub 
+0

Он не возвращает булевский язык. Учтите использование [встроенного метода .NET] (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.mousebuttons (v = vs.110) .aspx? Cs- save-lang = 1 & cs-lang = vb # code-snippet-1). –

+0

Что вы подразумеваете под этим? Можете ли вы как-то отредактировать мой код и заставить его работать? – Inzample

ответ

0

Я проверил ваш код и, похоже, работает нормально, единственное, что может быть причиной, - это слишком высокий интервал таймера. Если вы хотите, чтобы события срабатывали только при нажатии или отпускании кнопки мыши, я немного изменил вашу функцию и добавил логическое значение, чтобы проверить, была ли кнопка мыши уже выключена или выпущена.

 
Private Sub Timer3_Tick(sender As Object, e As EventArgs) 
    Static LeftMouseButtonDown As Boolean = False 
    Dim hotkey = GetAsyncKeyState(Keys.LButton) 
    If CBool(hotkey) = True Then 
     ' Timer1.Start() 
     If Not LeftMouseButtonDown Then 
      LeftMouseButtonDown = True 
      Console.WriteLine("Left mouse button was pressed.") 
     End If 
    Else 
     ' Timer1.Stop() 
     If LeftMouseButtonDown Then 
      LeftMouseButtonDown = False 
      Console.WriteLine("Left mouse button was released.") 
     End If 
    End If 
End Sub 

Я надеюсь, что это помогло!
~ Nic

Смежные вопросы