最初に DataSource を設定し、次に DisplayMember、および CheckedListBox "clbItemType" の ValueMember プロパティを設定することによって行う、カスタム "DBitemtype" オブジェクトのリストを設定する CheckedListBox があります。実行時に、ユーザーはアイテムを変更するオプションを持っているので、最初に DataSource を null に設定し、次に DataSource を新しいリストに設定することで、CheckedListBox を同じ「DBitemtype」オブジェクトの別のリストに再バインドするイベントがあります。次に、次のように、DisplayMember プロパティと ValueMember プロパティをまったく同じ値に再度設定します。
clbItemType.DataSource = null;
clbItemType.DataSource = _SelectedItemTypes; // A List<DBitemtype>
clbItemType.DisplayMember = DBitemtype.Columns.ItemName; // String constant - value "ItemName"
clbItemType.ValueMember = DBitemtype.Columns.ID; // String constant - value "ID"
clbItemType.Refresh();
DisplayMember と ValueMember に使用される両方の文字列定数は、DBitemtype クラスのパブリック文字列プロパティを記述します。
私が抱えている問題は、DisplayMember が "ItemName" で設定される場合と、設定されず、コードをステップ実行するときに "" のままになる場合があることです。なぜそれが時々しか起こらないのかについてのパターンを見つけることができないようです. エラーや例外はスローされません。
私が見つけたのは、「DisplayMember の新しい値を設定できない場合、以前の値が維持される」というものでした。ここのmsdn記事からCheckedListBox.DisplayMemberプロパティ
だから私はこれが2部構成の質問だと思います:
1) 他の誰かがこの問題を抱えていますか?
2) DisplayMember が設定されない条件は何ですか?