1

所以这是一个非常简单的问题,以前从未有人问过,或者以前有人问过,但我问错了这个问题。

所以说我正在将 a 数据绑定List<MyObject>WinFormListBox中的控件。

像这样:

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

然后说我稍后想要访问该数据绑定列表。

我以为这样的事情会起作用......

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

在 Visual Studio 中,我可以清楚地看到 的DataSource属性myListBox包含一个 List 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 回答