VB2010。我有一个包含大约 25 个复选框的表单,用户可以打开或关闭这些复选框。当他们单击“确定”时,会出现一个相当大的过程。但是,如果复选框的状态没有从表单加载更改为按下 OK 按钮,则没有什么可更新的。
我以前在 VB6 中所做的是基于遍历数组中的所有复选框来计算负载校验和,如下所示:
cheksum = checksum + (2^i)
其中 i 是复选框元素索引,并且根据定义是唯一的。
当用户单击“确定”按钮时,我将再次计算校验和,如果等于负载校验和,则我什么也不做。
因此,对于 .NET,我正在尝试做同样的事情,但无法想出一个例程来告诉我复选框集合的 .Checked 状态在加载时是否与单击按钮时相同。我不再有一个数组,只有一堆唯一命名的复选框。
更新:感谢 Jim Mischel 的建议。我采用了基本代码,而不是传递参数,而是选择使其更加硬编码,因为我只会在一个模块中使用它。它看起来像:
Private Function GetCrc() As Integer
'we create a list of the checkboxes in the form
Dim boxList As New List(Of CheckBox)
boxList.Add(chkStates)
boxList.Add(chkWorld)
boxList.Add(chkCountries)
'convert the list to an array of checkboxes
Dim boxes() As CheckBox = boxList.ToArray
'calculate the checksum
Dim checkSum As Integer = 0
For i As Integer = 0 To boxes.Length - 1
If boxes(i).Checked Then
checkSum = checkSum + (1 << i)
End If
Next i
Return checkSum
End Function