我如何在物件點擊時為發件人創建一個函式?我嘗試了一些東西,但沒有成功。
Private Function functionName(ByVal sender As Object, e As EventArgs)
If sender.checked = True Then
For i As Integer = 2 To 14
If i <> 2 Then
Dim cbClubs = DirectCast(Controls.Item("cbBtt" & i & "detrefla"), CheckBox) 'Clubs
cbClubs.Checked = False
End If
Next
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
functionName(cbBtt2detrefla, sender)
End Sub
uj5u.com熱心網友回復:
讓我們在這段代碼中排序。
Private Function functionName(ByVal sender As Object, e As EventArgs)
'...
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
functionName(cbBtt2detrefla, sender)
End Sub
為什么e As EventArgs在 functionName(...) 宣告中使用?它從未使用過,因此您可以將其洗掉:
Private Function functionName(ByVal sender As Object)
在您正在評估的 functionName 中sender.Checked(提示:您可以使用If sender.Checked而不是If sender.Checked = True):為什么不將發件人定義為復選框,而不是物件?
Private Function functionName(ByVal sender As CheckBox)
現在,讓我們看看 for 回圈:
For i As Integer = 2 To 14
If i <> 2 Then
'...
End If
Next
您正在評估 i 從 2 到 14,但如果 i = 2,您不想做任何事情。為什么不從 i=3 開始 for 回圈?它更快更好。
For i As Integer = 3 To 14
'...
Next
另一件事:functionName()不產生輸出,所以它應該是 a Sub,而不是 a Function。
現在,您的代碼是:
Private Sub functionName(ByVal sender As CheckBox)
If sender.Checked Then
For i As Integer = 3 To 14
'...
Next
End If
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
functionName(cbBtt2detrefla)
End Sub
此外,如果functionName僅被呼叫,Button1_Click而這里僅與 一起使用cbBtt2detrefla,則可以避免將兩個子項分開:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If cbBtt2detrefla.Checked Then
For i As Integer = 3 To 14
'...
Next
End If
End Sub
最后但并非最不重要的:
Dim cbClubs = DirectCast(Controls.Item("cbBtt" & i & "detrefla"), CheckBox) 'Clubs
cbClubs.Checked = False
僅當cbBtt3detrefla其他復選框直接在表單上時才有效。Panel例如,如果它們在System.NullReferenceException. 如果你想迭代上的每個控制元件,你可以這樣做此。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/402849.html
標籤:
上一篇:在介面中定義類時如何實作?
下一篇:有沒有人可以解釋的動態解決方案?
