【问题标题】:How to set multiple selected items on a WinForms ListBox如何在 WinForms ListBox 上设置多个选定项
【发布时间】:2015-01-29 16:07:05
【问题描述】:

我有一个处于多选模式的 System.Windows.Forms.ListBox 和一组我想被选中的项目。我该怎么做?

[Test]
public void SetListBox()
{
    var listBox = new ListBox();
    var items = new List<string>{"one", "two", "three", "four"};
    listBox.SelectionMode = SelectionMode.MultiSimple;
    listBox.Items.AddRange(items.ToArray());
    var selectedItems = new List<string> {"two", "four"};
    // ???
    Assert.AreEqual(selectedItems, listBox.SelectedItems);
}

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    这样做:

    selectedItems.Select(sd => listBox.Items.IndexOf(sd)).Where(i => i >= 0).ToList().ForEach(i => listBox.SetSelected(i, true));
    

    为:

        [Test]
        public void SetListBox()
        {
            var listBox = new ListBox();
            var items = new List<string>{"one", "two", "three", "four"};
            listBox.SelectionMode = SelectionMode.MultiSimple;
            listBox.Items.AddRange(items.ToArray());
    
            var selectedItems = new List<string> {"two", "four"};
            selectedItems.Select(sd => listBox.Items.IndexOf(sd)).Where(i => i >= 0).ToList().ForEach(i => listBox.SetSelected(i, true));
    
            Assert.AreEqual(selectedItems, listBox.SelectedItems);
        }
    

    【讨论】:

    • 将 Where 子句更改为 .Where(i =&gt; i != -1).Where(i =&gt; i &gt;= 0) 应该没问题。否则,如果它是列表框中的第一个项目,它将无法选择它...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-26
    • 2012-03-20
    • 2013-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多