如何清除以前选择的CheckedListBox - VB.NET

时间:2014-08-28 14:36:09

标签: vb.net checkedlistbox

好的,所以我有一个checkedlistbox,当用户选择一个项目时,它会将该项目打印成单词。这很完美。但是,我想给用户提供不选择任何内容的选项,但是当用户没有选择复选框列表中的项目时,它仍会将之前选择的项目打印成MS字。

以下是我的代码:

 Private Sub ExportContactOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportContactOkButton.Click

    Dim i As Integer
    Dim array_Counter_Contacts As Integer
    Dim array_size_Contacts As Integer

    array_Counter_Contacts = 0

    For i = 0 To ExportContactCheckedListBox.Items.Count() - 1
        If ExportContactCheckedListBox.GetItemCheckState(i) = CheckState.Checked Then
            array_size_Contacts = UBound(SelectedContacts)
            ReDim Preserve SelectedContacts(array_size_Contacts + 1)
            SelectedContacts(array_Counter_Contacts) = ExportContactCheckedListBox.Items(i)

            If Search.debugging = True Then
                MsgBox(ExportContactCheckedListBox.Items(i))
            End If

            array_Counter_Contacts += 1
            ExportContactCheckedListBox.Items(i) = ExportContactCheckedListBox.Items(i).ToString.Replace("'", "''")
            If array_Counter_Contacts = 1 Then
                ContactNames = "" & ExportContactCheckedListBox.Items(i) & ""
            Else
                ContactNames = String.Concat(ContactNames & "', '" & ExportContactCheckedListBox.Items(i) & "")
            End If
        End If
    Next

    If Search.debugging = True Then
        MsgBox(ContactNames)
    End If

sConnection.Close()
Dispose()
Me.Close()
End Sub

我试过删除,清除,我甚至试过这个

Dim i As Integer
    For i = 0 To ExportContactCheckedListBox.CheckedIndices.Count - 1
    ExportContactCheckedListBox.SetItemChecked(ExportContactCheckedListBox.CheckedIndices(0), False)
    Next i

但没有任何效果。谁能帮我?我想要的是能够让checklistbox在" OK"之后忘记或清除已检查的项目。按下按钮,文本已经打印成文字。

1 个答案:

答案 0 :(得分:2)

使用List(Of String)存储选择,当然记住,当您点击ExportContactOkButton时重新初始化列表

' Declared at the form level....
Dim SelectedContacts as List(Of String)

.....
Private Sub ExportContactOkButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExportContactOkButton.Click

    Dim i As Integer

    SelectedContacts = new List(Of String)()

    For i = 0 To ExportContactCheckedListBox.Items.Count() - 1
        If ExportContactCheckedListBox.GetItemCheckState(i) = CheckState.Checked Then
            SelectedContacts.Add(ExportContactCheckedListBox.Items(i))
            .....
        End If
    Next
End Sub    

通过这种方式,每当您点击ExportContactOKButton重新初始化联系人列表时,循环选中已检查的项目,将选中的项目添加到列表中。

List(Of String)更好,因为您不需要事先知道用户在CheckedListBox中选择了多少项并连续调整数组大小。您只需向其中添加新项目即可。你总是可以像数组一样使用它

Dim Dim array_Counter_Contacts = SelectedContacts.Count
For i = 0 to array_Counter
   Console.WriteLine(SelectedContacts(i))
Next