Winforms 如何以编程方式迭代datagrid行?

Winforms 如何以编程方式迭代datagrid行?,winforms,Winforms,经过多年的web开发,我突然又回到了WinForms,在一些简单的事情上遇到了麻烦。我将业务对象的ArrayList绑定到Windows窗体DataGrid。我希望用户能够编辑单元格,完成后,按下保存按钮。此时,我希望迭代DataGrid中的所有行和列,以查找任何更改,并将它们保存到数据库中。但是我找不到访问DataGrid行的方法 我还想实时验证单个单元格,因为它们是经过编辑的,但我非常确定这是可以做到的。(可能不是使用ArrayList作为DataSource?)但是对于迭代DataGrid

经过多年的web开发,我突然又回到了WinForms,在一些简单的事情上遇到了麻烦。我将业务对象的
ArrayList
绑定到Windows窗体
DataGrid
。我希望用户能够编辑单元格,完成后,按下保存按钮。此时,我希望迭代
DataGrid
中的所有行和列,以查找任何更改,并将它们保存到数据库中。但是我找不到访问
DataGrid
行的方法

我还想实时验证单个单元格,因为它们是经过编辑的,但我非常确定这是可以做到的。(可能不是使用
ArrayList
作为
DataSource
?)但是对于迭代
DataGrid
,我很惊讶这似乎不可能

为了使用datagrid,我真的必须将业务对象数据填充到datatables中吗

foreach(DataGrid1.Rows中的var行)
{
多斯塔夫(世界其他地区);
}
//或------------------------------------------
foreach(DataGrid1.Rows中的DataGridRow行)
{
多斯塔夫(世界其他地区);
}
//或---------------------------------------------
对于(int i=0;i
WinForms 3.0有什么比1.1更好的地方吗

我不知道3.0,但是您可以在VS2008中编写代码,它运行在.NET2.0框架上。(因此,您可以使用最新的C语言,但只能使用2.0库)


这会让你得到泛型(
List
而不是那些糟糕的数组列表)和大量其他东西,你最终会少写3倍的代码。

Aha,我真的只是再次测试了所有人!:)真正的答案是,您很少需要迭代datagrid。因为即使绑定到ArrayList,绑定也是双向的。不过,知道如何直接创建网格还是很方便的,它可以时不时地节省几行代码

object cell = myDataGrid[row, col];
但并非我自己和Orion给出了更好的答案:说服利益相关者升级到更高版本的C#,以节省开发成本并提高可维护性和可扩展性