[英]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.