2010-09-08 22 views
1

選擇項目我有填充與對象(自定義類)一ListBox的方法在ListBox

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

Container也就是持有List<Item>其中該容器的所有對象存儲的自定義類。

現在,用戶可以選擇(使用ComboBox)來顯示某個Container,並且我想選擇該容器存儲的所有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.ItemsList.Items中的對象具有相同的字段,但程序中的對象並不相同。

我希望你能理解我的問題 - 我該如何得到這個工作?

編輯

爲了澄清;我希望容器是可編輯的。因此,用戶從列表中選擇一個容器,並且只有在該容器中的項目在列表框中被選中。

在容器中的那些不會仍然是在列表框,只是沒有選擇

因此,用戶可以編輯容器的物品!

回答

1

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的項目。

1

假設ListListBox,您可以使用AddRange功能:

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

然後假設ContainerListComboBox,你可以這樣做:

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]); 
    } 
} 

您還需要進行確定ListListBox設置爲啓用多項選擇:

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