2009-06-16 55 views
1

我有一个列表验证对象 - 验证。绑定到来自另一个绑定列表的项目的属性

public class Validation 
{ 
     public IList<KeyValuePair<string, string>> Arguments 
     { //(...) } 
} 

在一个形式中,绑定到验证列表,并结合到参数从验证列表当前验证列表一个DataGridView的列表。我允许用户在对话窗口中编辑选定的验证对象。用户可以修改参数集合。关闭窗口后,应刷新DataGridView中显示的项目。他们不。另外,如果参数列表在编辑后为空,则会引发IndexOutOfRangeException。

我该如何让它工作?

回答

0

有几个重要的数据绑定接口;特别是IBindingList,它具有DataGridView可以侦听的ListChanged事件。

是否可以将具体列表更改为BindingList<T>?这应该给你免费的大部分?您不需要更改退货类型,因为BindingList<T> : IList<T>DataGridView只知道实际的对象(它并不在乎您称之为IList<T>)。

其他务实的选择就是重新设置数据绑定在DataGridView - 也许设置DataSourcenull然后回:

object tmp = grid.DataSource; 
grid.DataSource = null; 
grid.DataSource = tmp; // low-tech data-source reset 
+0

呵呵呵,你是我一天中的英雄;)感谢 – agnieszka 2009-06-16 10:45:40

相关问题