代码之家  ›  专栏  ›  技术社区  ›  F.P

在列表框中选择项目

  •  1
  • F.P  · 技术社区  · 14 年前

    我有一个方法可以填充 ListBox

    internal void UpdateList() {
     foreach (Item item in Container.Items)
      List.Items.Add(item);
    }
    

    Container 也是一个自定义类,它包含 List<Item>

    ComboBox 容器 我要选择所有 Item

    我试过了

    private void ContainerList_SelectedIndexChanged(Object sender, EventArgs e) {
     Container container = (Container)ContainerList.SelectedItem;
    
     foreach (Item item in container.Items)
      List.SelectedIndecies.Add(List.Items.IndexOf(item));
    }
    

    但这并没有起到作用:什么都没有被选中。我觉得问题在于 Container.Items List.Items

    我希望你能理解我的问题-我怎样才能让这个工作?

    为了澄清;我希望容器是可编辑的。因此,用户从列表中选择一个容器,并且在列表框中只选择该容器中的项目。

    那些不在容器中的仍然在列表框中,只是没有被选中

    2 回复  |  直到 14 年前
        1
  •  1
  •   Arseny    14 年前

    1) 选择容器后,可以将项目添加到列表中。因此,在列表中,只有一个容器中的项目。

    internal void UpdateList() {
    List.Items.Clear(); // delete previos items
     foreach (Item item in Container.Items) // selected container
      List.Items.Add(item);
    }
    

    2) 每个容器都可能有一个ID,因此在向列表中添加项目时,可以使用该ID设置项目的数据。在SelectedIndexChanged事件中,遍历所有项目并仅选择具有所选容器ID的项目。

        2
  •  1
  •   SwDevMan81    14 年前

    List ListBox ,您可以使用 AddRange 功能:

    internal void UpdateList()
    {
       List.Items.AddRange(Container.Items);
    }
    

    那么假设 ContainerList ComboBox

    private void ContainerList_SelectedIndexChanged(Object sender, EventArgs e) 
    {
       Container container = (Container)ContainerList.SelectedItem;
    
       for(int i = 0; i < List.Items.Count; i++)
       {
          List.Items[i].Selected = container.Items.Contains(List.Items[i]);
       }
    }
    

    ,的 列表框 是否启用了多选设置:

    // Set the selection mode to multiple and extended.
    List.SelectionMode = SelectionMode.MultiExtended;