当鼠标悬停在地图上时,我正在尝试捕获KeyUp事件。我正在使用GMaps库。
我尝试过使用gmap控件的keypress,keydown和keyup事件(放置地图的地方),我尝试使用表单事件中的keypress,keydown和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
没什么......
也许有人有想法这样做?
谢谢!
答案 0 :(得分:0)
对不起,我一直在寻找答案,我已经找到了我在这个帖子上寻找的答案 https://social.msdn.microsoft.com/Forums/windows/en-US/ffeeea42-f6ba-420f-827e-74879fd29b26/how-to-detect-arrow-keys-in-vbnet?forum=winforms
使用属性:
Me.KeyPreview = True
在表单的Load方法中,并在表单的KeyUp中使用此代码:
Private Sub BMS_KeyUp(sender As Object, e As KeyEventArgs) Handles MyBase.KeyUp
Select Case e.KeyCode
Case Keys.Right
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat, GMapControl.Position.Lng + 0.1)
e.Handled = True
Case Keys.Left
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat, GMapControl.Position.Lng - 0.1)
e.Handled = True
Case Keys.Up
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat + 0.1, GMapControl.Position.Lng)
e.Handled = True
Case Keys.Down
GMapControl.Position = New PointLatLng(GMapControl.Position.Lat - 0.1, GMapControl.Position.Lng)
e.Handled = True
End Select
End Sub
无论如何,我想问一件我不明白的事情。我之前尝试过此操作,但没有使用 Me.KeyPreview 属性,也没有使用 e.Handled = true 属性。
有人可以向我解释为什么使用这两行我有我想要的行为,为什么不使用它们我无法做到?
谢谢!