我有一个列表框,里面有一堆项目。用户可以单击项目以编辑其内容。如何防止用户取消选择所有项目?即,用户不应该选择任何内容。
nfg76nw01#
在您的情况下缺少一个案例,即当列表被清除时,您将重新选择列表中不再存在的项目。我通过添加额外的检查来解决这个问题。
var listbox = ((ListBox)sender); if (listbox.SelectedItem == null) { if (e.RemovedItems.Count > 0) { object itemToReselect = e.RemovedItems[0]; if (listbox.Items.Contains(itemToReselect)) { listbox.SelectedItem = itemToReselect; } } }
然后我把这个inside a behaviour。
inkz8wg92#
我不确定是否有一种直接的方法来禁用取消选择一个项目,但一种对用户透明的方法是跟踪最后选择的项目,每当SelectionChanged事件被引发并且选择的索引为-1时,然后重新选择最后一个值。
5n0oy7gb3#
这肯定能防止用户取消选择…将这两个事件添加到checkedListBox1中,并在设计模式下将CheckOnClick属性设置为“True”。(MSVS2015)
private void checkedListBox1_SelectedValueChanged(object sender, EventArgs e) { checkedListBox1.SetItemChecked(checkedListBox1.SelectedIndex, true); } private void checkedListBox1_MouseDoubleClick(object sender, MouseEventArgs e) { checkedListBox1.SetItemChecked(checkedListBox1.SelectedIndex, true); }
tkqqtvp14#
要禁用列表框/下拉列表中的一个或多个选项,您可以添加“disabled”属性,如下所示。这将阻止用户选择此选项,并且它将获得灰色覆盖。
ListItem item = new ListItem(yourvalue, yourkey); item.Attributes.Add("disabled","disabled"); lb1.Items.Add(item);
os8fio9y5#
一个解决方案,如amccormack所建议的:
amccormack
private void hostsListBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { if(lstHosts.SelectedItem == null) { if(e.RemovedItems.Count > 0) { lstHosts.SelectedItem = e.RemovedItems[0]; }
o2g1uqev6#
如果您的ListView支持Multiple选择,这对我来说是有效的。
ListView
Multiple
var found = e.RemovedItems.Cast<User>() .Where(user => user.Id == Id); if (found.Any()) { User user = found.First(); user.Selected = true; (e.Source as ListView).SelectedItems.Add(user); }
无论Single还是MultipleSelectionMode,此解决方案都应该有效。如果您希望多个项目保持选中状态,请通过将对象添加回SelectedItems属性来相应地调整代码。
Single
SelectionMode
SelectedItems
6条答案
按热度按时间nfg76nw01#
在您的情况下缺少一个案例,即当列表被清除时,您将重新选择列表中不再存在的项目。我通过添加额外的检查来解决这个问题。
然后我把这个inside a behaviour。
inkz8wg92#
我不确定是否有一种直接的方法来禁用取消选择一个项目,但一种对用户透明的方法是跟踪最后选择的项目,每当SelectionChanged事件被引发并且选择的索引为-1时,然后重新选择最后一个值。
5n0oy7gb3#
这肯定能防止用户取消选择…将这两个事件添加到checkedListBox1中,并在设计模式下将CheckOnClick属性设置为“True”。(MSVS2015)
tkqqtvp14#
要禁用列表框/下拉列表中的一个或多个选项,您可以添加“disabled”属性,如下所示。这将阻止用户选择此选项,并且它将获得灰色覆盖。
os8fio9y5#
一个解决方案,如
amccormack
所建议的:o2g1uqev6#
如果您的
ListView
支持Multiple
选择,这对我来说是有效的。无论
Single
还是Multiple
SelectionMode
,此解决方案都应该有效。如果您希望多个项目保持选中状态,请通过将对象添加回SelectedItems
属性来相应地调整代码。