53

フォームには 1 つのコンボボックスと 1 つのリストボックスがあります。「追加」ボタンをクリックすると、ComboBox から選択した項目を ListBox に追加したい。

public partial class MyForm:Form
{
    List<MyData> data = new List<MyData>();
    private void ShowData()
    {
       listBox1.DataSource = data;
       listBox1.DisplayMember = "Name";
       listBox1.ValueMember = "Id";
    }

    private void buttonAddData_Click(object sender, EventArgs e)
    {
       var selection = (MyData)comboBox1.SelectedItem;
       data.Add(selection);
       ShowData();
    }
}

この例では、選択されたアイテムが ListBox 内の新しい選択に置き換えられます。リストにアイテムを追加する必要があります。

コードの何が問題になっていますか?

4

7 に答える 7

1

あるいは、おそらくこれを実装する最も正しい方法は、提供された を使用することObservableCollection<T>です。を実装することのみを目的として設計されていますINotifyCollectionChanged

public partial class MyForm : Form
{
    ObservableCollection<MyData> data = new ObservableCollection<MyData>();

    public MyForm()
    {
        listBox1.DataSource = data;
        listBox1.DisplayMember = "Name";
        listBox1.ValueMember = "Id";
    }

    private void buttonAddData_Click(object sender, EventArgs e)
    {
       var selection = (MyData)comboBox1.SelectedItem;
       data.Add(selection);
    }
}

ObservableCollection<T>DataSource バインディングを実装しているためINotifyCollectionChanged、データが変更されるたびに ListBox が自動的に更新されます。

于 2014-07-10T06:09:55.263 に答える