我有真正的 KeyPreview。另外,我嘗試使用 console.writeline 使 keydown 列印一些東西并添加一個斷點,但它甚至沒有運行它。所以基本上,該功能根本沒有運行。此外,keyup 也不起作用。
Private Sub Form1_KeyUp(sender As Object, Input As KeyEventArgs) Handles MyBase.KeyUp
If Input.KeyCode = Keys.Up Then
FedexMobile.Speed.Y = 0
ElseIf Input.KeyCode = Keys.Down Then
FedexMobile.Speed.Y = 0
ElseIf Input.KeyCode = Keys.Left Then
FedexMobile.Speed.X = 0
ElseIf Input.KeyCode = Keys.Right Then
FedexMobile.Speed.X = 0
ElseIf Input.KeyCode = Keys.E Then
End If
End Sub
Private Sub Form1_KeyDown(sender As Object, Input As KeyEventArgs) Handles MyBase.KeyDown
If Input.KeyCode = Keys.Up Then
FedexMobile.Speed.Y = Speed * -1
ElseIf Input.KeyCode = Keys.Down Then
FedexMobile.Speed.Y = Speed
ElseIf Input.KeyCode = Keys.Left Then
FedexMobile.Speed.X = Speed * -1
ElseIf Input.KeyCode = Keys.Right Then
FedexMobile.Speed.X = Speed
ElseIf Input.KeyCode = Keys.O Then
If Speed > 0 Then
Speed = Speed - 1
End If
ElseIf Input.KeyCode = Keys.P Then
If Speed < 10 Then
Speed = Speed 1
End If
ElseIf Input.KeyCode = Keys.E Then
End If
End Sub
uj5u.com熱心網友回復:
檢查當前關注的控制元件。Keys.Up、.Down、.Left 和 .Right KeyDown-Events 僅在當前沒有焦點互動控制時觸發,無論 KeyPreview 是真還是假都無關緊要。我不知道這個問題的“真正”解決方案,但您可以通過在表單中??添加不帶文本的標簽并將此標簽的 TabIndex 設定為 0 來避免它。
uj5u.com熱心網友回復:
嗯......如果你不能讓它作業,那么你應該能夠覆寫ProcessCmdKey它應該捕獲用戶按下的所有鍵。我不一定推薦這個,但是當按下任何鍵時它會觸發。您目前在技術上“應該”像在我的測驗中那樣作業。
Protected Overrides Function ProcessCmdKey(ByRef msg As Message, ByVal keyData As Keys) As Boolean
Debug.WriteLine("KeyData is: " & keyData.ToString())
Return MyBase.ProcessCmdKey(msg, keyData)
End Function
uj5u.com熱心網友回復:
嘗試更改“輸入”引數變數的名稱。輸入是一個 VB 命令。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/426209.html
下一篇:Microsoft.Toolkit.Forms.UI.Controls找不到Windows運行時型別“Microsoft.Toolkit.Win32.UI.XamlHost.IXamlMetadata
