0

2 つの ListBox があり、それらの間でアイテムを移動したいと考えています。コードは次のようになります。

    private void FillItems()
    {
        allItems = GetAllItems();
        availableItems = new List<string>(allItems);
        selectedItems = new List<string>();

        itemsListBox.DataSource = availableItems;
        selectedItemsListBox.DataSource = selectedItems;
    }

    private void addItemButton_Click(object sender, EventArgs e)
    {
        var itemsToAdd = itemsListBox.SelectedItems;
        foreach (string item in itemsToAdd)
        {
            availableItems.Remove(item);
            selectedItems.Add(item);
        }
    }

十分に単純です。文字列をあるリストから別のリストに移動します。

今、これは機能しません。コレクションの変更について通知する方法が欠けていることに気付きました。だから私はこれらのオプションを試しました:

  1. Refresh()リスト ボックスの呼び出し。役立たず。

  2. データ バインディングの追加レイヤーの使用 ( BindingSource)。また、役に立たない。

  3. コントロールを呼び出しResetBindings()ます。まだ何もありません。

ここで何が間違っていますか?ある種の監視可能なコレクションを使用する必要がありますか?

4

3 に答える 3

0

自分のバインドを更新する必要がないため、ObservableCollections を使用することをお勧めします。

http://msdn.microsoft.com/en-us/library/ms668604.aspx

于 2013-07-05T10:35:54.163 に答える