我想让用户操作我放入组合框的数据。问题是我无法找到将更改应用于组合框内的数据的方法。关于如何实现这一点的任何线索?
要添加一些上下文,我的组合框中的所有数据都是格式为“SomeName |#”的字符串。最后的数字由用户修改为他/她想要的任何内容。
答案 0 :(得分: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;