[英]throw KeyUp event in MouseHover event in VB.NET
我試圖在鼠標懸停在地圖上時捕獲KeyUp事件。 我正在使用GMaps庫。
我嘗試使用gmap控件(放置地圖的位置)的keypress,keydown和keyup事件,並且嘗試使用form事件中的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
沒事了...
也許有人有一些想法可以做到這一點?
謝謝!
抱歉,我一直在尋找答案,並且已經在該線程上找到了我所尋找的響應https://social.msdn.microsoft.com/Forums/windows/en-US/ffeeea42-f6ba-420f-827e -74879fd29b26 /如何在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屬性。
有人可以向我解釋為什么使用這兩行我有我想要的行為,為什么不使用它們我卻無法做到?
謝謝!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.