2

我想让用户操作我放入组合框中的数据。问题是我想不出一种方法来将更改应用于组合框中的数据。关于如何实现这一目标的任何线索?

要添加一些上下文,我的组合框中的所有数据都是格式为 "SomeName|#" 的字符串。最后的数字由用户修改为他/她想要的任何值。

4

1 回答 1

5

您是否尝试更改所选组合框项目中的文本?

   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;
于 2013-01-06T02:33:46.333 回答