2011-01-25 7 views
0

ListにバインドされたListBoxがあります。コレクションを反映するようにListBoxが更新されるたびに、SelectedIndexが先頭の項目に変更されます。どのようにこの動作を停止し、現在のSelectedIndexを保持することができますか?バインドされたListBox SelectedIndexが変更され続ける

[UPDATE]

私はこの種の機能のために使用することをお勧めコレクションを発見した - 'するBindingList':http://msdn.microsoft.com/en-us/library/ms132679(v=VS.90).aspx

WulfgarPro。

答えて

2

[...]更新情報の収集新しいコレクションがある意味

んを反映するには?もしそうなら "同じ位置"とはどういう意味ですか?

(nother)リストに再バインドする場合は、&を保存してインデックスの位置を復元する必要があります。 DataSourceを更新する場所の周りにコードを書くだけです。

+0

@ Henk Holterman「同じ位置」とは、「同じ商品」を意味する - あなたが提案したものを実装しようとしています。私は新しい項目を取得するためにスレッドを使用しています - バインドされたコレクションが変更されたときListBoxが自動的に更新されるべきではありませんか? ListBox.DataSource = [..]を呼び出さずにコレクション内のアイテムを反映するListBox更新があるようです。 – wulfgarpro

+0

@wulfというBindingListが役立ちます。しかし、アイテムの新しいインスタンスをロードすると、「同じアイテム」はあまり簡単ではありません。 –

+0

バインディングリストは完璧です!ご協力いただきありがとうございます。 – wulfgarpro

1

ListではなくBindingListコレクションを使用することで、多くの問題が改善されました。私はもともとスレッドとデリゲートを使ってコレクションを照会し、ListBox.DataSource = [..]を呼び出してバインディングを更新しました。これは遅く、扱いにくく、エラーが発生しやすくなりました。 SelectedItemを簡単に保持できないという私の元の問題は言うまでもありません。 BindingListに変更すると、スレッドを削除してデリゲートすることができ、すべてが意図どおりに機能するようになりました。 ListBoxの表示プロパティを割り当てるには、ListBox.DisplayMember = [..]を使用します。

WulfgarPro。

関連する問題