2013-01-06 58 views
1

我想讓用戶操縱我已經放入組合框的數據。事情是我無法找到一種方法將更改應用到組合框中的數據。任何線索如何實現這一目標?如何更改組合框中的項目?

要添加一些上下文,我組合框中的所有數據都是格式爲「SomeName |#」的字符串。最終的號碼由用戶修改爲他/她想要的任何內容。

回答

3

您是否嘗試更改所選組合框項目中的文本?

comboBox.Items[comboBox.SelectedIndex] = "SomeName|#"; 

至於變化的數據,如果上面是不是你想要的,不是試試這個:

// Get the selected the data from the combobox 
MyData data = comboBox.Items[comboBox.SelectedIndex] as MyData; 
// Perform your operations 
data.myData = "NewData"; 
// Add the modified data back 
comboBox.Items[comboBox.SelectedIndex] = data; 

如果綁定到一個列表:

// When adding new Data 
    MyData newData = new MyData("Data1"); 
    comboBox1.Items.Add(newData); 
    myDataList.Add(newData); 

    // When modifying selected data 
    MyData data = comboBox1.Items[comboBox1.SelectedIndex] as MyData; 
    data.myData = "NewData"; 
    comboBox1.Items[comboBox1.SelectedIndex] = myDataList[comboBox1.SelectedIndex] = data; 

如果你想知道MyData是什麼:

public class MyData 
{ 
    public string myData; 

    public MyData(string p) 
    { 
     myData = p; 
    } 

    public override string ToString() 
    { 
     return myData; 
    } 
} 

編輯 好吧,如果你要綁定到數據源需要先解除綁定,讓我們假設數據源是myDataList:

 // Get the selected data 
     MyData data = myDataList[comboBox.SelectedIndex] as MyData; 
     // Unbind 
     comboBox.DataSource = null; 

     // When adding new Data 
     MyData newData = new MyData("NewData" + myDataList.Count()); 
     myDataList.Add(newData); 

     // When modifying selected data 
     data.myData = "ModifiedData"; 

     // Rebind 
     comboBox.DataSource = myDataList; 
+0

我用你的第一選擇嘗試,但我得到了一個錯誤「項集合數據源屬性設置時無法修改「 –

+0

您是否有任何機會將數據源連接到組合框? – msivri

+0

我是。我會猜測這意味着我改變了數據源而不是組合框。 –

相關問題