マウスがマップ上にあるときにKeyUpイベントをキャプチャしようとしています。 GMapsライブラリを使用しています。VBHouseのMouseHoverイベントでKeyUpイベントをスローする
マップが配置されているgmapコントロールのkeypress、keydown、およびkeyupイベントを使用しようとしましたが、フォームイベントからkeypress、keydown、およびkeyupを使用しようとしましたが、何も起こりません。
私のフォームでは、いくつかのボタンもあります。行キーの1つを押すと、フォーカスがボタン間で変化していることがわかります。矢印を使用してボタンを選択したいのと同じですなぜなら、私がプログラムのキーイベントに特定のコードを持っていれば、私はなぜそうしているのか分かりません。
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