VB.net二进制文件的十进制值复选框

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

我在一个组中有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
        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,并不意味着它是该系列的第一件商品。所以从这个意义上讲,它不是很健壮。向表单中添加另一个复选框可能会完全更改集合中复选框的顺序,从而更改函数的结果。所以,作为一个解决方案,它的有用性取决于你想要达到的目标。再次感谢您的回复。我们将在未来牢记这一点!