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 (а также гарантирует, что обрабатываются только чекбоксы) .