【VB.NET】DataGridViewに入力された値を取得する
フォームアプリケーションでユーザがDataGridViewに入力した値を取得する方法。
DataGridViewの仕様
Key列とValue列の2列があるだけのシンプルなDataGridViewです。
カラム名はそれぞれKey、Valueです。そのまま。
DataGridViewの名前はdgQueryです。
実装したコード
Dim arrQuery As New List(Of List(Of String))
If dgQuery.Rows.Count > 1 Then
For Each row As DataGridViewRow In dgQuery.Rows
Dim arrRow As New List(Of String)
'新規行ではない場合に追加
If row.IsNewRow = False Then
arrRow.Add(row.Cells("Key").Value)
arrRow.Add(row.Cells("Value").Value)
End If
arrQuery.Add(arrRow)
Next
End If
DataGridViewは何も入力しなくても1行は必ず存在するという仕様のようです。
そのため行が2行以上存在するときにユーザの入力があったとみなしてデータを取得するようにしています。
1つ1つの行はDataGridViewRowに格納されます。
全行をFor Eachで回して取得します。
値はDataGridViewRowのCells(カラム名).Valueで取得できます。
Cells(0)というようにインデックスでも取得できます。
実際に入力してみるとわかりますが、入力すると一番下に空の行(新規行)が自動的に追加されます。
行数を取得すると2行となりますが、欲しいのは1行目だけ。
なのでIsNewRowで新規行かどうかを判定して、新規行でなければ値を取得するようにしています。
ちなみにこの例では取得した結果を文字列のリストのリストに格納するというよくわからないことをしていますが、そこはやりたいことに応じて変えてください。