2014-08-27 56 views
0

我有2個comboBox具有通過設計重做器指定的相同項目的對象。動態更改組合框中的項目

如果在第一個組合框中選擇了任何特定的項目,它必須從第二個組合框中刪除。

我現在做的事:

1)添加了這個

static ComboBox.ObjectCollection defaultCollection; 

2)

defaultCollection = comboBoxRange1.Items; 

3)

private void comboBoxRange1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    comboBoxRange2.Enabled = true; 
    ComboBox.ObjectCollection copyCollection = defaultCollection; 
    copyCollection.RemoveAt(comboBoxRange1.SelectedIndex); 
    comboBoxRange2.DataSource = copyCollection; 
} 

但在這之後我被選中item re從兩個組合框移動並且defaultCollection變爲修改。我如何解決它?我是否需要製作藏品的副本或手動重新組合每次更改的值?

回答

1

ComboBox.ObjectCollection copyCollection = defaultCollection;不會做你想做的事情:它不會拷貝,但設置參考defaultCollection

下面是關於是否一個變量通過引用或由值設置設置一些更多的解釋:如果數據是一個value type,基本上結構和枚舉(比如說int,這是System.Int32別名) ,的值的數據將爲拷貝時做一個任務;如果數據是reference type,基本上是類,接口和委託,則在執行任務時,對該對象的引用將爲傳遞給LHS的

至於你的問題,是的,你需要做一個副本,以保持defaultCollection未修改。

1

您並未創建集合的副本,您只是創建一個引用與第一個集合相同的集合的新變量。使用哪個變量來移除項目並不重要,您仍然只有一個由2個變量引用的集合並綁定到2個組合框。

相關問題