別の選択に基づいてチェックリストボックス (CLB) を設定するのに苦労しています。また、最初の CLB のすべてのアイテムをチェック/チェック解除する [すべて選択] チェックボックスが上部にあることにも注意してください。コードは次のとおりです。
Private Sub chkSelectAll_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chkSelectAll.CheckedChanged
For i As Integer = 0 To clb1.Items.Count - 1
clb1.SetItemChecked(i, chkSelectAll.Checked)
Next
If chkSelectAll.Checked = False Then
clb2.Items.Clear()
End If
End Sub
Private Sub clb1_ItemCheck(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ItemCheckEventArgs) Handles clb1.ItemCheck
Dim i As Integer = clb1.SelectedIndex
For j As Integer = 0 To al_2.Count - 1
If i = -1 Then
For k As Integer = 0 To al_2.Count - 1
If Not clb2.Items.Contains(al_2(k).sDate) Then
clb2.Items.Add(al_2(k).sDate)
Else : k += 1
End If
Next
ElseIf (e.NewValue = CheckState.Checked And al_2(j).sName = al_1(i)) Then
clb2.Items.Add(al_2(j).sDate)
ElseIf (e.NewValue = CheckState.Unchecked And al_2(j).sName = al_1(i)) Then
clbProdBkups.Items.Remove(al_2(j).sDate)
End If
Next
End Sub
最初の CLB には、ボタン クリック イベントの値の配列リストが取り込まれます。最初の CLB でチェックされた内容に基づいて、構造体の配列リストからの対応する値が 2 番目の CLB を埋める必要があります。次のコードは、「すべて選択」チェックボックスがクリックされるまで部分的に機能します。その時点で「すべて選択」がチェックされる前に他の値が選択されていた場合、2 番目の CLB には正しい数の対応する値が入力されますが、最新の値のみが入力されます。まだ選択されていないすべての項目の対応するすべての値の代わりに、最初の CLB の選択された項目。
どんな洞察も大歓迎です。
〜8日