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;
    }
}

編集 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;
于 2013-01-06T02:33:46.333 に答える