簡體   English   中英

VB.Net調用此函數的最佳方法?

[英]VB.Net Best way to call this function?

使用下面的代碼,調用第二個函數(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

正確的方法是:根本不要調用它! 這是一個事件處理程序 ,不應該由您調用。

如果該方法包含要在某些情況下手動調用的代碼,請將其移至 CheckBox1_CheckedChanged和您的其他代碼調用的單獨方法。

此外,該注釋是正確的:如果更改CheckBox1.Checked ,它將再次調用事件處理程序–您將獲得無限循環。

在下面試試

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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