在CheckedBoxLists中搜索复选框

时间:2017-02-24 15:38:19

标签: vb.net

我正在创建一个简单的应用程序,使我能够将信息输入到一些文本框中,然后在按下一个按钮(称为Addbtn)后将它们组合成一个字符串。此字符串将添加到名为ConcernsChk的复选框列表中。当完成一个或多个这些字符串时,用户将单击相应的复选框并单击一个按钮(称为CompleteSortBtn),该按钮将该字符串传输到另一个复选框列表。我遇到的问题是我的checkboxlist项目不会根据其检查状态删除。他们从顶部开始一次删除一个并向下移动。

以下是相关代码:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles CompleteSortBtn.Click

    Dim Disposition As String = ""

    Dim i As Integer
    If ConcernsChk.CheckedItems.Count > 0 Then
        For i = 0 To (ConcernsChk.Items.Count - 1)
            If ConcernsChk.GetItemChecked(i) = True Then
                Disposition = ConcernsChk.Items(i)
                DispositionChk.Items.Add(Disposition)
                ConcernsChk.Items.Remove(Disposition)
            End If
        Next
    Else
        MessageBox.Show("Please add Concerns before marking them complete.")
    End If

我不断得到一个错误,我不能等于3,我不知道该怎么办。无论是在复选框列表中还是10个项目,都会抛出此信息。

长话短说,当我推送CompleteSortBtn时,我希望程序做4件事:1。通过ConcernChk搜索2.找到复选框3.将复选框发送到DispositionChk 4.从ConcernChk删除选中的项目

对长篇文章表示歉意,并感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

你正在迭代虽然没有检查项目的项目....计数会有所不同。

由于您要从列表中删除项目,因此您需要从头到尾进行操作。

    For i =  (ConcernsChk.Items.Count - 1) to 0 step - 1
        If ConcernsChk.Items(i).Checked  Then
            Disposition = ConcernsChk.Items(i)
            DispositionChk.Items.Add(Disposition)
            ConcernsChk.Items.RemoveAt(I)
        End If
    Next