簡體   English   中英

在VB.NET中的MouseHover事件中引發KeyUp事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM