0

以下のコードを使用して、2 番目の関数 (Checkbox1.CheckedChanged) を呼び出す最良の方法は何ですか? (sender, e) を使用してみましたが、プログラムのインストールが完了するたびに App2.msi を呼び出し続け、App2.msi を繰り返しインストールしようとするため、プログラムが連続ループに陥ります。 ()" しかし、私のコードはコンパイルされません。

私はVBにかなり慣れていないので、msiを別の方法で呼び出す必要があるのか​​ 、それともこのようなものを呼び出す方法を理解するのに十分な知識がないだけなのかわかりません。誰かがこれ以上詳細を必要とする場合は、私に知らせてください! ありがとう!

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Dim p1 As New Process
    p1 = System.Diagnostics.Process.Start("App1.msi")
    p1.WaitForExit()
    CheckBox2.Checked = True
    Label2.Visible = True

Call CheckBox1_CheckedChanged()

End Sub

Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged

End Sub


Private Sub Label2_Click(sender As Object, e As EventArgs) Handles Label2.Click

End Sub

Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
    Dim p1 As New Process
    p1 = System.Diagnostics.Process.Start("App2.msi")
    p1.WaitForExit()
    CheckBox1.Checked = True
    Label3.Visible = True
End Sub

Private Sub Label3_Click(sender As Object, e As EventArgs) Handles Label3.Click

End Sub
End Class
4

2 に答える 2

3

正しい方法は次のとおりです。まったく呼び出さないでください。これはイベント ハンドラーであり、ユーザーが呼び出すことは想定されていません。

状況によっては手動で呼び出したいコードがメソッドに含まれている場合は、他のコードによって呼び出される別のメソッドに移動します。 CheckBox1_CheckedChanged

さらに、コメントは正しいです: を変更CheckBox1.Checkedすると、イベント ハンドラーが再度呼び出され、無限ループが発生します。

于 2013-04-23T07:24:02.013 に答える