VB - снятие флажков в групповом поле

В настоящее время у меня есть 5 групповых блоков, заполненных флажками. Когда я хочу отменить выбор всех из них (для кнопки "Очистить выбор"), я использую этот код, который я нашел на форуме:

For Each CheckBox In grpbox_Hiragana
        CheckBox.checked = "false"

Во-первых, я уверен, что это правильный способ снять флажки, во-вторых, группа "grpbox_Hiragana" возвращает следующую ошибку:

Выражение имеет тип 'System.Windows.Forms.GroupBox', который не является типом коллекции

Если кто-то может подтвердить, что это правильный способ сделать это / помочь исправить ошибку, сообщив мне, почему групповой ящик не будет принят, это было бы здорово.

2 ответа

Решение

Если у вас есть все флажки на одном групповом поле, используйте этот код:

    Dim ChkBox As CheckBox = Nothing
    ' to unchecked all 
    For Each xObject As Object In Me.GroupBox1.Controls
        If TypeOf xObject Is CheckBox Then
            ChkBox = xObject
            ChkBox.Checked = False
        End If
    Next

   ' to checked all 
    For Each xObject As Object In Me.GroupBox1.Controls
        If TypeOf xObject Is CheckBox Then
            ChkBox = xObject
            ChkBox.Checked = True
        End If
    Next

Или вы можете использовать CheckedListBox Control.

Альтернатива с меньшим количеством строк кода:

 For Each ChkBox As CheckBox In GroupBox1.Controls
    ChkBox.Checked = False
 Next

Кстати, ваш код сработал бы, если бы вы добавили .controls, As CheckBox просто включает intellisense (а также гарантирует, что обрабатываются только чекбоксы) .

Другие вопросы по тегам