0
KeyDownイベントを独立したサブプロシージャから参照し、元の独立したサブプロシージャにループバックさせようとしています。Key Downイベント(VB.NET)から元のSubプロシージャに戻る方法
- は、独立したサブの手順でオフを開始する(DisplayAction - その後のKeyDownイベントを呼び出し)
- がKeyDownイベントに入る(のKeyDown次いでDisplayActionを呼び出し)
- 元のサブ手順(DisplayAction)に入り、ループが継続。
*手順1と2は自分のコードで正常に動作します。ステップ3が問題です。私のプログラムは、独立したサブプロシージャにループバックしません。
Public Class frmMain
Dim RandomNumber As Integer
Dim RandomNumbers(1000) As Integer
Dim intAction As Integer
Dim strAction1 As String = "A"
Dim strAction2 As String = "B"
Dim strAction3 As String = "C"
Dim strAction4 As String = "D"
Dim i As Integer
Private Sub frmMain_Load(sender As Object, e As System.EventArgs) Handles Me.Load
FormLoad(sender, e)
End Sub
Private Sub FormLoad(sender, e)
'Creates random numbers here
DisplayAction(sender, e)
End Sub
Public Sub DisplayAction(sender, e)
For i As Integer = 0 To 3
Select Case lstRandom.Items(i)
Case 1
lblDisplay.Text = strAction1
intAction = 1
frmMain_KeyDown(Sender, intAction = 1)
Case 2
lblDisplay.Text = strAction2
intAction = 2
frmMain_KeyDown(sender, intAction = 2)
Case 3
lblDisplay.Text = strAction3
intAction = 3
frmMain_KeyDown(sender, intAction = 3)
Case 4
lblDisplay.Text = strAction4
intAction = 4
frmMain_KeyDown(sender, intAction = 4)
End Select
Next i
End Sub
Private Sub frmMain_KeyDown(sender, e) Handles Me.KeyDown
If intAction = 1 Then
lblDisplay.Text = "works! 1"
Call DisplayAction(sender, e)
ElseIf intAction = 2 Then
lblDisplay.Text = "works! 2"
Call DisplayAction(sender, e)
ElseIf intAction = 3 Then
lblDisplay.Text = "works! 3"
DisplayAction(sender, e)
ElseIf intAction = 4 Then
lblDisplay.Text = "works! 4"
DisplayAction(sender, e)
End If
End Sub
End Class
+1。また、イベントの引数が決して*必要でない場合は、メソッドのシグネチャを単純化するためにそれらを残しておくこともできます。プライベートサブfrmMain_Load()は、Me.Loadを処理します。プライベートサブfrmMain_KeyDown()はMe.KeyDownを処理します – MarkJ