Visual Basic如何禁用所有复选框?

时间:2015-11-03 20:27:41

标签: vba visual-studio-2010 checkbox

我正在使用Visual Basic 2010 Express

我想禁用表格的所有复选框

不仅如此,正如您在代码中看到的那样,有49个复选框。每个人都有一个活动,我想保存代码并对其进行优化。

Public Class Form1
        Dim intNumber As Integer
        Dim arrNumber(0 To 5) As Integer
        Dim i, x, y As Integer
        Dim maxCheck = 6
        Dim count As Integer = 1

        Private Sub setCheckbox(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox9.Click, CheckBox8.Click, CheckBox7.Click, CheckBox6.Click, CheckBox5.Click, CheckBox49.Click, CheckBox48.Click, CheckBox47.Click, CheckBox46.Click, CheckBox45.Click, CheckBox44.Click, CheckBox43.Click, CheckBox42.Click, CheckBox41.Click, CheckBox40.Click, CheckBox4.Click, CheckBox39.Click, CheckBox38.Click, CheckBox37.Click, CheckBox36.Click, CheckBox35.Click, CheckBox34.Click, CheckBox33.Click, CheckBox32.Click, CheckBox31.Click, CheckBox30.Click, CheckBox3.Click, CheckBox29.Click, CheckBox28.Click, CheckBox27.Click, CheckBox26.Click, CheckBox25.Click, CheckBox24.Click, CheckBox23.Click, CheckBox22.Click, CheckBox21.Click, CheckBox20.Click, CheckBox2.Click, CheckBox19.Click, CheckBox18.Click, CheckBox17.Click, CheckBox16.Click, CheckBox15.Click, CheckBox14.Click, CheckBox13.Click, CheckBox12.Click, CheckBox11.Click, CheckBox10.Click, CheckBox1.Click
        If count < 6 Then
            count = count + 1
        Else


        End If
    End Sub
End Class

1 个答案:

答案 0 :(得分:1)

循环遍历表单的所有子项,如果子项类型为CheckBox,则禁用它。这应该只需几行代码:您可以使用表单的Controls集合来访问子代。类似的东西:

For Each ctrl As Control In container.Controls
    If TypeOf ctrl Is CheckBox Then
        ctrl.Enabled = False
    End If
Next

您应该对事件处理程序执行相同操作:而不是使用那个疯狂的Handles控件列表,只需在运行时将循环中的事件处理程序添加到循环中。 MSDN有一个关于如何使用AddHandler的例子。