9

DataSource プロパティを使用して項目が設定されている ComboBox があります。DataSource は、カスタム オブジェクト (文字列プロパティ 'Value' と int プロパティ 'Id' を持つ) のコレクションです。初期化コントロールでは、DisplayMemberValueに、ValueMemberIdに設定しました。今、呼び出して DataSource をクリアしようとしましたが、

myComboBox.DataSource = null;

私がそれをしたとき、私の DisplayMember は自動的に "" にリセットされます。DataSource を適切にクリアしていますか?? それが私が振る舞うべき方法ですか?

4

2 に答える 2

4

私はそれを再現することができます..これは私が予想していたものではありませんが、DisplayMember後で元に戻す必要があるようです.

リフレクターを見ると、これは非常に意図的なものです。

        if (value == null)
        {
            this.DisplayMember = "";
        }

その背後にある理由はわかりませんが、単純に:

string oldDisplayMember = cbo.DisplayMember;
cbo.DataSource = null;
cbo.DisplayMember = oldDisplayMember;

きれいではありませんが、うまくいきます。

于 2009-03-13T08:19:51.900 に答える