コンボボックスに入れたデータをユーザーに操作してもらいたい。問題は、コンボボックス内のデータに変更を適用する方法がわからないことです。これを達成する方法についての手がかりはありますか?
コンテキストを追加するために、コンボボックス内のすべてのデータは「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;
}
}
編集 OK、最初にバインドを解除する必要があるデータ ソースにバインドしている場合は、データ ソースが 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;