0

我在一个组中有 8 个复选框,如果我想获得 binair 的十进制值

checkbox1.checked = true checkbox2.checked = true

那么值必须是 (2 ^ 0) + (2 ^ 1) = 3 (0 = checkbox1 和 1 = checkbox2 等)

我知道解决方案可能很简单,但直到现在我都无法让它发挥作用。我现在拥有的代码如下:

    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 个复选框)。

有人知道如何解决这个问题或能够指出我正确的方向吗?谢谢。

4

1 回答 1

1

您的函数返回一个布尔值(真/假),但如果您想知道已检查哪些选项,您确实想返回一个数字。这个怎么样:

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

So my function returns zero when no options are checked. Otherwise it returns an integer indicating which options have been checked (1 = the first option, 2 = second option, 3 = the first and second option, etc.).

于 2012-10-08T14:03:32.063 回答