VB.net二进制文件的十进制值复选框
我在一个组中有8个复选框,如果 checkbox1.checked=true checkbox2.checked=true 然后该值必须是(2^0)+(2^1)=3(0=复选框1,1=复选框2等) 我知道解决方案可能很简单,但直到现在我还是无法让它工作。我现在掌握的代码如下:VB.net二进制文件的十进制值复选框,vb.net,checkbox,binary,decimal,counter,Vb.net,Checkbox,Binary,Decimal,Counter,我在一个组中有8个复选框,如果 checkbox1.checked=true checkbox2.checked=true 然后该值必须是(2^0)+(2^1)=3(0=复选框1,1=复选框2等) 我知道解决方案可能很简单,但直到现在我还是无法让它工作。我现在掌握的代码如下: Private Function AnyOptionsChecked() As Boolean For Each chk As CheckBox In GroupBox1.Controls
Private Function AnyOptionsChecked() As Boolean
For Each chk As CheckBox In GroupBox1.Controls
t = t + 1
If chk.Checked = True Then
i = i + 2 ^ t
End If
Next
Return False
End Function
但在if/else开始工作之前,t似乎已经在7(因为有8个复选框)
是否有人知道如何解决这个问题,或者能够为我指出正确的方向?
谢谢。您的函数正在返回一个布尔值(真/假),但如果您想知道检查了哪些选项,您确实希望返回一个数字。这个怎么样:
Private Function OptionsChecked() As Integer
Dim t As Integer = 0
Dim result As Integer = 0
For Each chk As CheckBox In GroupBox1.Controls
If chk.Checked = True Then
result = result + 2 ^ t
End If
t = t + 1
Next
Return result
End Function
因此,当未选中任何选项时,我的函数返回零。否则,它将返回一个整数,指示选中了哪些选项(1=第一个选项,2=第二个选项,3=第一个和第二个选项,等等)。谢谢您的正确答案。但不知怎么的,它的工作原理和我预期的有点不同。如果只选择CheckBox1,则它从128开始,而您希望CheckBox1从1开始。我所要做的就是在表格中打开复选框,这不是什么大问题,但它仍然让我有点困惑哈哈!非常感谢你的回答,它工作起来很有魅力!仅仅因为你称它为checkbox1,并不意味着它是该系列的第一件商品。所以从这个意义上讲,它不是很健壮。向表单中添加另一个复选框可能会完全更改集合中复选框的顺序,从而更改函数的结果。所以,作为一个解决方案,它的有用性取决于你想要达到的目标。再次感谢您的回复。我们将在未来牢记这一点!