1

これは非常に単純化されているため、これまでに尋ねられたことがないか、以前に尋ねられたことがある質問ですが、私は間違った質問をしています。

だから私はWinFormList<MyObject>ListBoxコントロールにデータバインドしているとしましょう。

そのようです:

List<MyObject> list = new List<MyObject>();
// add some MyObjects to list...
myListBox.DataSource = new BindingSource(list, null);

次に、後でそのデータバインドされたリストへのアクセスを取得したいとします。

このようなものはうまくいくと思いました...

List<MyObject> results = (List<MyObject>)myListBox.DataSource;

DataSourceVisual Studio では、 のプロパティにmyListBoxのリストが含まれていることがはっきりとわかりますがMyObjects、キャストの結果はInvalidCastException.

これを達成する効果的な方法はありますか?それとも、元のリストを保持する必要がありますか?

4

1 に答える 1

3

myListBox.DataSourceではBindingSourceなく、List<T>です。バインディング ソースを取得してから、Listプロパティからデータを抽出する必要があります。

var bs = (BindingSource)myListBox.DataSource;
List<MyObject> results = (List<MyObject>)bs.List;
于 2013-09-03T16:41:57.493 に答える