4

何年にもわたる Web 開発の後、突然 WinForms に戻ってきましたが、単純であるべき何かで問題が発生しています。ArrayListWindows Forms にバインドされたビジネス オブジェクトがありますDataGrid。ユーザーがセルを編集できるようにしたいと思います。終了したら、[保存] ボタンを押します。DataGridその時点で、すべての行と列を反復処理して変更を見つけ、データベースに保存したいと思い ます。DataGridしかし、行 にアクセスする方法が見つかりません。

また、個々のセルが編集されているので、リアルタイムで検証したいと思いますが、それができると確信しています。(おそらく anArrayListを as として使用しないDataSourceでしょうか?) しかし、 を反復することに関してはDataGrid、それが不可能に見えることに非常に驚いています。

データグリッドを使用するには、ビジネス オブジェクトのデータをデータ テーブルに実際に詰め込む必要がありますか?

4

4 に答える 4

5
foreach(var row in DataGrid1.Rows)
{
  DoStuff(row);
}
//Or ---------------------------------------------   
foreach(DataGridRow row in DataGrid1.Rows)
{
  DoStuff(row);
}
//Or ---------------------------------------------
for(int i = 0; i< DataGrid1.Rows.Count - 1; i++)
{
  DoStuff(DataGrid1.Rows[i]);
}
于 2008-08-08T22:20:28.973 に答える
1
object cell = myDataGrid[row, col];
于 2008-08-11T02:59:12.670 に答える
0

WinForms 3.0 について、1.1 よりもはるかに優れている点はありますか?

3.0 についてはわかりませんが、.NET 2.0 フレームワークで実行される VS 2008 でコードを記述できます。(そのため、最新の C# 言語を使用できますが、2.0 ライブラリしか使用できません)

これにより、Generics ( List<DataRow>GodAwful ArrayLists の代わりに) とその他の大量のものが得られ、文字通り 3 分の 1 のコードを書くことになります。

于 2008-08-09T02:17:38.293 に答える
-2

ああ、私は本当にみんなをもう一度テストしていました!:)本当の答えは、データグリッドを繰り返す必要はめったにないということです。ArrayListにバインドする場合でも、バインドは双方向であるためです。それでも、グリッドを直接反復する方法を知っていると便利です。時々、数行のコードを節約できます。

しかし、NotMyselfとOrionはより良い答えを出しました。開発コストを節約し、保守性と拡張性を高めるために、利害関係者にC#のより高いバージョンに移行するように説得します。

于 2008-08-12T02:37:15.893 に答える