ユーザーコントロールでホストしているwinformsリストボックスコントロールがいくつかあります。このユーザー コントロールで必要な動作は、リスト ボックスの 1 つだけに一度に選択した項目を持たせることです。
したがって、Listbox1 の項目を選択して listbox2 リストボックスの項目をクリックすると、すべての項目が自動的に選択解除されます。
私は次のコードでこれを達成しようとしました:
dim listBox as listbox
For Each listName As String In _listboxes.Keys
If listName <> listboxName Then
listbox = me.controls(listName)
listbox.ClearSelected()
End If
Next
リストボックスの名前を辞書に保存しています。(リストボックスの数は動的です)。この例の listBoxName は、クリックされたばかりのリストボックスであるため、このコードはそのボックスの選択をクリアしないようにします。
このコードを実行したときの動作は非常に予想外です。listbox1、listbox2、listbox3 の 3 つのリストボックスがあるとします。listbox2 の item3 が現在選択されているとします。listbox1 の項目 4 をクリックすると、最終的に listbox1 の項目 4 が (予想どおり) 選択されますが、listbox2 では項目 1 が選択されます。
つまり、以前にアイテムを選択していた listBox では、選択がクリアされるのではなく、アイテム 1 が選択されたままになっています。
ClearSelection メソッド呼び出しの直後に debug.print listBox.SelectedItems.Count を発行しましたが、1 つの項目が選択されていることを確認しました。
これを行う方法やコードを修正する方法について何か考えはありますか?
セス
EDIT:ところで、私はリストボックスをビジネスオブジェクトコレクションにバインドしています。