0
我有兩個CheckListBox(chklbStep
,chklbSort
),它們包含相似的checklistbox項目。例如chklbStep下,它看起來像"step_factor_20120828"
和chklbSort下,它看起來像srt_factor_20120828
:對兩個類似CheckListBox的鏡像操作
chklbStep chklbSort
--------- ---------
step_factor_20120828 srt_factor_20120828
step_factor_20120829
從每個列表中的全部項目(在chklbSort不存在有時匹配項)不完全匹配。 chklbStep是包含所有內容的「主」複選框列表。
考慮到用戶只能在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
因爲列表內容是不相同的,一個項目的左側一個的索引可以不具有在另一相同的索引。所以e.Index是沒有用的。你可能會更好地使用諸如「factor_20120828」這樣的確定鍵來存儲Class對象,這樣你就可以很容易地找到它們。 – Plutonix 2014-09-01 11:41:10
@Putonix檢查選項正常工作。我只需要的是取消選中 – alwaysVBNET 2014-09-01 11:49:02
事件不會觸發這很奇怪。但是,您可以更改邏輯並將您的子附件添加到Click事件中,掃描您的整個主要清單並完全按照您的要求完成其餘工作。可能不是最好的解決方案,但它應該工作。 – SeraphimFoA 2014-09-01 11:54:01