一個單選按鈕會自動做到這一點,是比較傳統的。對於複選框的數組,你可以使用一個處理程序,整個數組:
Private Sub _CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim i As Integer
If sender.checked Then
For i = 0 To UBound(chk)
If chk(i) IsNot sender Then chk(i).Checked = False
Next i
End If
End Sub
請記住,如果你更改此處理程序,當你設置CHK(i)其遞歸調用.checked假。這種情況並不重要,因爲它在sender.checked爲false時會跳過所有內容。
在您需要的情況下,這裏是設置陣列的一種方式。 (在設計該指數財產從VB6升級到.NET消失了,所以你必須做出的一個控件數組中的代碼了。)
Public Class Form1
Dim chk(4) As CheckBox
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim i, k As Integer
k = 20
For i = 0 To UBound(chk)
chk(i) = New CheckBox
Me.Controls.Add(chk(i))
chk(i).Location = New Point(20, k)
k = k + chk(0).Height * 1.5 ' or some location
chk(i).Text = "Checkbox " & i ' some appropriate text
AddHandler chk(i).CheckedChanged, AddressOf _CheckedChanged
Next i
End Sub
什麼是到目前爲止你已經嘗試過什麼?你具體問題在哪裏?一系列複選框意味着什麼,有多少,動態創建或靜態,它們如何鏈接在一起?你的意思是ASP.Net或Winforms? – 2010-11-16 21:53:37
你應該評論我們迄今爲止嘗試過的答案,以及你遇到問題的地方。我只能談論我的答案,這應該完全按照你的想法工作。我通過它們的ID來識別對(chk1屬於chk2,chk3到chk4等等)。看看:http://stackoverflow.com/questions/4199370/how-to-create-event-for-dynamic-control-array-in-vb-net/4199611#4199611 順便說一句,不要忘記upvote至少有用的答案(向上箭頭)或/並將最佳答案標記爲答案(檢查)。 – 2010-11-17 12:11:23