我在用户控件中托管了几个 winforms 列表框控件。我想要在这个用户控件中的行为是我只希望一个列表框一次有一个选定的项目。
因此,如果我选择了 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 是刚刚单击的列表框,因此此代码避免清除该框中的选择。
运行此代码时得到的行为非常出乎意料。假设我有 3 个列表框...listbox1、listbox2 和 listbox3。假设当前选中了 listbox2 中的 item3。如果我单击 listbox1 的第 4 项,则最终结果是选择了 listbox1 中的第 4 项(如预期的那样),但 listbox2 选择了第 1 项。
简而言之,之前有一个项目选择的列表框仍然选择了项目 1,而不是被清除选择。
我在 ClearSelection 方法调用后立即发出了 debug.print listBox.SelectedItems.Count ,果然它说选择了 1 个项目。
关于如何执行此操作或修复我的代码的任何想法?
赛斯
编辑:顺便说一句,我将列表框绑定到业务对象集合。