0

現在、特定のオブジェクト タイプ (ウェーハと呼ばれる) の ArrayList にバインドされた ListBox (ウェーハ リスト ボックスと呼ばれる) があります。ListBox に動的に追加する場合は、次のコードを使用します。

wafersListBox.DataSource = null;
wafersListBox.DataSource = wafers;
wafersListBox.Refresh();

これにより、ListBox 内の項目が正常に変更されますが、すべての項目が消えます (それらはまだそこにあり、選択できますが、ユーザーには表示されません)。

これを修正する方法についてのアイデアはありますか?

更新:これは私のウェーハクラスです:

public class Wafer
{
    public string maID;

    public string MID
    {
        get
        {
            return maID;
        }
        set
        {
            maID = value;
        }
    }

    public Wafer(string m)
    {
        maID = m;
    }
}

これは私が呼び出すコードです。現在選択されているアイテムのコピーをリストボックスに追加します。

Wafer w = wafersListBox.SelectedItem as Wafer;
wafers.Add(w);          

wafersListBox.DataSource = null;
wafersListBox.DisplayMember = "MID";
wafersListBox.DataSource = wafers;
wafersListBox.Refresh();
4

2 に答える 2

0

申し訳ありませんが、新しい「回答」を書くよりも望ましい追加のコメントを追加することはできませんが、以下のように行の位置を切り替えた場合に違いが見られますか?

    Wafer w = wafersListBox.SelectedItem as Wafer;
    wafers.Add(w);          

    wafersListBox.DataSource = null;
    wafersListBox.DataSource = wafers;
    wafersListBox.DisplayMember = "MID";
    wafersListBox.Refresh();

別のSO投稿で出会ったもう1つのこと( ListBox は DataSource への変更を表示しません):

「この問題を引き起こす可能性があるリスト ボックスにもバグがあります。SelectionMode を None に設定すると、この問題が発生します。

回避策として、選択モードを One に設定し、データソースを更新するときに None に戻します。」

于 2013-10-07T20:27:32.600 に答える