Как проверить или снять все элементы в VB.NET элемент управления CheckedListBox

мне нужно выбрать и отменить выбор всех элементов в VB.NET CheckedListBox control, каков наилучший способ сделать это?

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        With clbCheckedListBox

        .Items.Add("Select/UnSelect All")
        .Items.Add("Enero")
        .Items.Add("Febrero")
        .Items.Add("Marzo")
        .Items.Add("Abril")
        .Items.Add("Mayo")
        .Items.Add("Junio")
        .Items.Add("Julio")
        .Items.Add("Agosto")
        .Items.Add("Septiembre")
        .Items.Add("Octubre")
        .Items.Add("Noviembre")
        .Items.Add("Diciembre")

        .SelectedIndex = 0

    End With


End Sub


    Private Sub clbCheckedListBox_ItemCheck(sender As Object, e As System.Windows.Forms.ItemCheckEventArgs) Handles clbCheckedListBox.ItemCheck

    If e.Index = 0 Then

        If e.NewValue = CheckState.Checked Then

            For idx As Integer = 1 To Me.clbCheckedListBox.Items.Count - 1
                Me.clbCheckedListBox.SetItemCheckState(idx, CheckState.Checked)
            Next

        ElseIf e.NewValue = CheckState.Unchecked Then

            For idx As Integer = 1 To Me.clbCheckedListBox.Items.Count - 1
                Me.clbCheckedListBox.SetItemCheckState(idx, CheckState.Unchecked)
            Next

        End If

    End If

End Sub

после часов вышеуказанный код работает отлично для меня !

7 ответов


Рикардо, возможно, это может быть то, что вы ищете:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim items$() = New String() {"Select/UnSelect All", "Enero",
     "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio",
     "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}
    For Each Str As String In items : clbCheckedListBox.Items.Add(Str) : Next
End Sub ' Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs)

Private Sub clbCheckedListBox_ItemCheck(sender As System.Object, e As System.Windows.Forms.ItemCheckEventArgs) Handles clbCheckedListBox.ItemCheck
    If e.Index = 0 Then
        Dim newCheckedState As CheckState = e.NewValue
        For idx As Integer = 1 To clbCheckedListBox.Items.Count - 1
            Me.clbCheckedListBox.SetItemCheckState(idx, newCheckedState)
        Next
    End If
End Sub

вы имеете в виду что-то вроде этого:

Dim checked As Boolean = True   ' Set to True or False, as required.
For i As Integer = 0 To CheckedListBox1.Items.Count - 1
    CheckedListBox1.SetItemChecked(i, checked)
Next

здесь я просто перебираю все элементы CheckedListBox и устанавливаю их проверенное состояние.


If button.Text = "Select All" Then
    For i As Integer = 0 To checklist.Items.Count - 1
        checklist.SetItemChecked(i, True)
    Next
    Button.Text = "Deselect All"
Else
    For i As Integer = 0 To checklist.Items.Count - 1
        checklist.SetItemChecked(i, False)
        Button.Text = "Select All"
    Next
End If

Я нашел это clbCheckedListBox.clearSelection() хорошо работает для отмены выбора всех.


To check all CheckedListBox Item:

For i As Integer = 0 To CheckedListBox1.Items.Count - 1
     CheckedListBox1.SetItemChecked(i, True)
Next

To uncheck all CheckedListBox Item:

For i As Integer = 0 To CheckedListBox1.Items.Count - 1
     CheckedListBox1.SetItemChecked(i, false)
Next

добавлено отдельный checkbox называется "выделить все". При проверке и снятии этого checkbox статьи checklistbox может быть выбран или не выбран. Так что вы можете назвать это


поместите этот код в SelectedValueChanged событие.

Private Sub clbCheckedListBox_SelectedValueChanged(sender As Object, e As System.EventArgs) Handles ContrListCheckBox.SelectedValueChanged
    If clbCheckedListBox.SelectedIndex = 0 Then
        If clbCheckedListBox.GetItemChecked(0) = False Then
            For idx As Integer = 1 To clbCheckedListBox.Items.Count - 1

                Me.clbCheckedListBox.SetItemChecked(idx, False)
            Next
        Else
            For idx As Integer = 1 To ContrListCheckBox.Items.Count - 1

                Me.clbCheckedListBox.SetItemChecked(idx, True)
            Next
        End If
    ElseIf clbCheckedListBox.SelectedIndex > 0 Then
        If clbCheckedListBox.CheckedItems.Count = clbCheckedListBox.Items.Count - 1 And clbCheckedListBox.GetItemChecked(0) = False Then
            clbCheckedListBox.SetItemCheckState(0, CheckState.Checked)
        End If
        For idx As Integer = 1 To clbCheckedListBox.Items.Count - 1

            If clbCheckedListBox.GetItemChecked(idx) = False Then
                clbCheckedListBox.SetItemCheckState(0, CheckState.Unchecked)

            End If
        Next
    End If
End Sub

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