0

如果我有 4 个不同的复选框,并且当用户选择其中一个时,我希望其他 3 个被禁用,因此当另一个复选框已被选中时,您无法单击复选框,我将如何执行此操作?我有这个,但它现在不起作用,我认为它会:

    If NoDelayCheckMarkBox.Checked = True Then
        timeBetweenIterationDelay = 0
        SecondDelayCheckMarkBox.Enabled = False
        HalfSecondDelayCheckMarkBox.Enabled = False
        FiftyMSDelayCheckMarkBox.Enabled = False

我仍然可以单击任意数量的复选框。感谢您的任何帮助。

4

1 回答 1

2

正如@brian 已经说过的那样,单选按钮似乎是实现此结果的一种更有机的方式,但如果您愿意,您仍然可以使用复选框来做到这一点

CheckBox.CheckedChanged为所有四个复选框使用相同的子处理事件

Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) _
    Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged
    'cast sender
    Dim senderCheck As CheckBox = DirectCast(sender, CheckBox)

    'loop through all checkboxes
    For Each checkbox In {CheckBox1, CheckBox2, CheckBox3, CheckBox4}

        'only apply changes to non-sender  boxes
        If checkbox IsNot senderCheck Then

            'set property to opposite of sender so you can renable when unchecked
            checkbox.Enabled = Not senderCheck.Checked
        End If
    Next
End Sub
于 2013-08-02T15:43:10.560 回答