【发布时间】:2010-11-28 23:02:31
【问题描述】:
我有一个 WinForm 应用程序,其中有多个绑定到 SortableBindingLists 的 DataGridView。
在某些情况下,我需要以编程方式从网格绑定到的列表中删除一个项目。
我似乎无法让 DGV 识别它的数据已更改,或者具体来说,它的行数减少了。我正在调用 dataGridView1.Invalidate(),它正在重新绘制网格,但它尝试重新绘制与以前一样多的行,并引发一系列“索引不存在”的异常,每一列都有一个异常。
这是一个展示问题的简化代码示例:(只是一个带有 DGV 和一个按钮的 WinForm。)
private List<Employee> list;
private void Form1_Load(object sender, EventArgs e)
{
list = new List<Employee>();
for (int ix = 0; ix < 3; ix++)
{
list.Add(ObjectMother.GetEmployee(ix+1));
}
dataGridView1.DataSource = list;
}
private void cmdDeleteARow_Click(object sender, EventArgs e)
{
list.Remove(list[0]);
dataGridView1.Invalidate();
}
在 ASP.NET 中,当使用 GridView 控件时,可以调用“DataBind()”方法来强制它刷新数据。 WinForms 中似乎没有这样的东西,还是我遗漏了什么?
【问题讨论】:
标签: winforms datagridview data-binding