【问题标题】:Listbox deselect top item列表框取消选择顶部项目
【发布时间】:2015-06-26 10:40:28
【问题描述】:

我有一个列表框,我想在循环运行时取消选择列表中的第一个选定项目,因为它应该一个接一个地处理列表项。目前我正在使用这个:

var list = new object[listBoxTracks.SelectedItems.Count];
for (int i = 1; i < listBoxTracks.SelectedItems.Count; i++)
    list[i - 1] = listBoxTracks.SelectedItems[i];

listBoxTracks.SelectedItems.Clear();
foreach (var track in list)
    listBoxTracks.SelectedItems.Add(track);

我认为/知道这可能非常糟糕,但我不知道还有什么其他可能性。我尝试了 selectedIndex += 1 等的东西,但这似乎让它崩溃了。如果在我很抱歉之前已经回答了这个问题,但我在我的研究中没有发现任何东西:/

【问题讨论】:

  • 你想取消选中第一项吗?或禁用它保持选择
  • 我想取消选择/取消选中第一个选定的项目。因此,如果我调用 listBoxTracks.SelectedItems[0] ,则会调用下一个项目。所以每次我调用代码时都会处理下一个项目。
  • 您知道 .NET 至少有 4 个不同的 ListBox 类吗?当您指出您的 GUI 平台是什么时,它会有所帮助。

标签: c# listbox selecteditem selected deselect


【解决方案1】:

据我所知,您可以直接操作 SelectedItems。因此,您还可以从中删除单个项目,例如

listBoxTracks.SelectedItems.Remove(listBoxTracks.SelectedItems[0]);

【讨论】:

  • 我是用这个取消选择它还是用这个完全删除它?谢谢你的回答:)
  • 由于您将其从 SelectedItems 集合中删除,因此仅删除了它的选中状态。您可以通过从 Items 集合中将其从列表中完全删除。
  • 顺便说一句,现在已经删除了另一个答案。用户建议 SelectedItem 属性始终包含第一个选定项(如果未选择任何项,则为 null)。所以你可以使用它而不是使用第 0 个元素。在任何情况下,请务必检查没有选择任何内容的情况。
【解决方案2】:
  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);
        }

这肯定能做到,我也想要这个......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    相关资源
    最近更新 更多