Dan*_*ain 4 c# datagridview winforms
我使用一组DataGridViews(dgv)通过属性显示类的成员.我使用dgv,以便用户可以在视图中编辑成员的值(因此我不必显示用于编辑该值的表单或文本框).
我正在显示的类的结构如下
Class1 (Displayed in a list view)
Collection Of class2 (Displayed in a dgv, we'll call it dgv1)
Collection of class3 (Displayed in a dgv, we'll call it dgv2)
Run Code Online (Sandbox Code Playgroud)
Class3存在,因为字符串集合不会在dgv中显示为字符串.(长度显示在dgv中.
Class2和Class3具有我想在dgv中编辑的字符串属性,因此它们是dgv中显示的唯一值.
当我将class2或class3的新实例添加到它们各自的父类时,我重新绑定显示该集合的dgv.
添加类的新实例后,它出现在dgv中,但是如果我去选择值(通过在dgv中单击它)我得到一个异常,说明"索引-1没有值"
如果我将编辑的信息保存到表单中然后重新打开表单,则不会出现此问题.我之前无法编辑的值可以编辑而没有问题.
And*_*ndy 10
我知道这个问题很老但是:
如果您最初绑定一个空的集合,它不更改通知给DGV(如集合不,但确实的BindingList),初始电流行偏移将被正确设置为-1,(因为它是空的.)
当您随后将对象添加到数据绑定集合时,它们仍将在网格上正确显示,但不会通知CurrencyManager任何更改,并且当前行偏移将固定为-1.
因此,当您尝试编辑行时,CurrencyManager认为您正在尝试编辑偏移-1处的行,并抛出异常.
要解决此问题,您需要在与行交互之前重新绑定,或者在包含一个或多个项目时最初绑定Collection等.
| 归档时间: |
|
| 查看次数: |
5475 次 |
| 最近记录: |