在两个类似的CheckListBox上镜像操作

时间:2014-09-01 11:31:19

标签: vb.net vb.net-2010

我有两个CheckListBoxes(chklbStepchklbSort),它们包含类似的checklistbox项目。例如,在chklbStep下它看起来像"step_factor_20120828",在chklbSort下它看起来像srt_factor_20120828

chklbStep                 chklbSort 
---------                 ---------
step_factor_20120828      srt_factor_20120828
step_factor_20120829

每个列表中的总项目不完全匹配(有时chklbSort上的匹配项目不存在)。 chklbStep是'主人' checkboxlist包含所有内容。

我正在尝试镜像两个列表上的检查/取消选中操作,考虑到用户只能在chklbStep上检查/取消选中。以下代码的问题是,如果用户取消选中chklbStep中的相应项,则chklbSort上的项永远不会取消选中。 有什么想法吗?

 Private Sub chklbStep_ItemCheck(sender As Object, e As ItemCheckEventArgs) 
 Handles chklbStep.ItemCheck

    Dim listCheckedItems As New List(Of String)()
    Dim listUNcheckedItems As New List(Of String)()
    '
    For Each item In chklbStep.CheckedItems
        listCheckedItems.Add(item.ToString())
    Next

    If e.NewValue = CheckState.Checked Then
        listCheckedItems.Add(chklbStep.Items(e.Index).ToString())
    End If

    'Trying to clear the items but this action does not work since the 
    'Sub is only called only on Checking an item

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


    For Each item As String In listCheckedItems

        Dim sSort As String = Regex.Replace(item, "step", "srt", RegexOptions.IgnoreCase)
        Dim iSort As Integer = chklbSort.Items.IndexOf(sSort)
        If iSort > -1 Then

            chklbSort.SetItemChecked(iSort, True)


        End If

    Next
End Sub

1 个答案:

答案 0 :(得分:0)

通过修改代码修复:

  If e.NewValue = CheckState.Checked Then
         listCheckedItems.Add(chklbStep.Items(e.Index).ToString())
  Else
         listCheckedItems.Remove(chklbStep.Items(e.Index).ToString())
  End If