【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で新規行かどうかを判定して、新規行でなければ値を取得するようにしています。

ちなみにこの例では取得した結果を文字列のリストのリストに格納するというよくわからないことをしていますが、そこはやりたいことに応じて変えてください。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です