0

任何人都可以压缩以下代码吗?

Dim a as integer = 0
    Dim b as integer = 4
    Dim c as integer =4
    Dim d as integer =4

For Each rad As RadioButton In GroupBox1.Controls
    If b > 1 Then
    rad.Text = ds.Tables("questionBank").Rows(a).Item(b)
    b = b - 1
    End If
    Next



    a = a + 1
    For Each rad As RadioButton In GroupBox2.Controls
    If c > 1 Then
    rad.Text = ds.Tables("AddressBook").Rows(a).Item(c)
    c = c - 1
    End If
    Next


    a = a + 1
    For Each rad As RadioButton In GroupBox2.Controls
    If d > 1 Then
    rad.Text = ds.Tables("AddressBook").Rows(a).Item(d)
    d = d - 1
    End If
    Next

我正在开发基于 LAN 的多项选择题 MCQ 应用程序。我有一个带有多个组框的表单,每个组框都包含三个单选按钮。每个单选按钮的文本属性必须显示一个问题的选项,以便用户可以选择其中一个选项作为他的答案。

数据集“ds”包含问题和答案。每行包含一个问题和三个选项。问题在第 1 列,选项分别在第 2、3 和 4 列。

变量 a 用于循环遍历行,变量 b、c 和 d 用于循环遍历行的列。

4

2 回答 2

0

尝试:
替换

rad.Text = ds.Tables("questionBank").Rows(a).Item(b)

rad.Text = ds.Tables("questionBank").Rows(a)(b)
于 2013-06-02T09:08:51.393 回答
0

如果您使用编号系统来命名您的单选按钮(即 rb00),您可以使用行索引和项目索引通过其名称(即GroupBox1.Controls("rb" + rowindex.tostring + itemindex.tostring).text = ds.Tables("questionBank").Rows(rowindex).Item(itemindex))访问单选按钮。然后使用 for 循环而不是 for each 并遍历表行并嵌套一个 for 循环以遍历项目。迭代变量成为您的 rowindex 和 itemindex。Count 属性减 1 成为您的限制。

您可以使用 OfType 属性遍历组框:

For Each gb As GroupBox in Me.Controls.OfType(Of GroupBox)
    'some code
Next
于 2013-06-02T09:20:06.883 回答