我想让用户操作我放入组合框中的数据。问题是我想不出一种方法来将更改应用于组合框中的数据。关于如何实现这一目标的任何线索?
要添加一些上下文,我的组合框中的所有数据都是格式为 "SomeName|#" 的字符串。最后的数字由用户修改为他/她想要的任何值。
您是否尝试更改所选组合框项目中的文本?
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;