我想在鼠標懸停在地圖上時捕獲KeyUp事件。我正在使用GMaps庫。我已經嘗試使用我的gmap控件(放置地圖的地方)的按鍵事件,keydown和keyup事件,並且我嘗試使用表單事件中的按鍵,keydown和keyup,但沒有任何反應。在VB.NET的MouseHover事件中拋出KeyUp事件
在我的表單中,我也有一些按鈕,當按下其中一個按鍵時,我看到的是焦點在按鈕之間變化,效果就好像你想用箭頭選擇一個按鈕在鍵盤上,我不知道爲什麼要這樣做,如果我在程序的關鍵事件中有特定的代碼。
在MouveHover情況下我使用這個代碼:
Private Sub GMapControl_MouseHover(sender As Object, e As EventArgs) Handles GMapControl.MouseHover
If Keys.Up <> Keys.None Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat + 1, GMapControl.Position.Lng)
End If
End Sub
但我沒有我期待的行爲。我也想使用窗體的KeyUp事件:
Private Sub BMS_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
If e.KeyCode.ToString = "Up" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat + 1, GMapControl.Position.Lng)
ElseIf e.KeyCode.ToString = "Down" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat - 1, GMapControl.Position.Lng)
ElseIf e.KeyCode.ToString = "Left" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat, GMapControl.Position.Lng - 1)
ElseIf e.KeyCode.ToString = "Right" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat, GMapControl.Position.Lng + 1)
End If
End Sub
而且我也試過在GMAP控制的KeyUp事件相同:
Private Sub GMapControl_KeyUp(sender As Object, e As KeyEventArgs) Handles GMapControl.KeyUp
If e.KeyCode.ToString = "Up" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat + 1, GMapControl.Position.Lng)
ElseIf e.KeyCode.ToString = "Down" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat - 1, GMapControl.Position.Lng)
ElseIf e.KeyCode.ToString = "Left" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat, GMapControl.Position.Lng - 1)
ElseIf e.KeyCode.ToString = "Right" Then
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat, GMapControl.Position.Lng + 1)
End If
End Sub
並沒有什麼...
也許有人有一些想法做到這一點?
謝謝!
KeyUp事件通常只在當前擁有焦點的控件上引發。通過設置「KeyPreview = True」,表單首先獲得擊鍵。 – SSS
謝謝@SSS!在這種情況下e.Handled = true有什麼作用? –
'e.Handled = True'停止控制,焦點也處理'KeyUp'事件。請參閱https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(System.Windows.Forms.Control.KeyUp);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv4.5.2 ); k(DevLang-VB)&rd = true – SSS