DataGridView:特定のセルの値を取得する(サンプルあり)

📋 目次(クリックで展開)

DataGridView に表示されているデータから、「〇行目の〇列目の値を取得したい」という場面はよくあります。C# の DataGridView では、Rows[行].Cells[列].Value という基本の形で、特定のセルの値を取得することができます。

今回は、シンプルなコードを用いて、行や列の指定方法の基本を解説します。

特定のセルを取得する仕組み

DataGridView のセルは、「行(Row)」「列(Cell)」 の番号や名前を指定してアクセスします。

  • 行の指定方法:上から順番に 0, 1, 2... と数えます(0 からスタートするため、2行目は Rows[1] になります)。
  • 列の指定方法:今回のサンプルのように "Name" などの列名(文字列) で指定する方法のほか、左から順番に 0, 1, 2... という列インデックス(数字) で指定することもできます。

実装コード

画面に DataGridView(dataGridView1)と、値を取得するためのボタン(btnGetCell)が配置されているものとします。ボタンをクリックすると、2行目の「Name」列の値をメッセージボックスで表示するシンプルなスクリプトです。

Form1.cs

Form1.cs
using System.Data;
namespace DataGridView_GetSpecificCell;
public partial class Form1 : Form
{
private DataTable _dataTable = new DataTable();
public Form1()
{
InitializeComponent();
InitializeData();
InitializeDataGridView();
}
private void InitializeData()
{
// テストデータの準備
_dataTable.Columns.Add("ID", typeof(string));
_dataTable.Columns.Add("Name", typeof(string));
_dataTable.Columns.Add("Price", typeof(int));
_dataTable.Rows.Add("P001", "ノートパソコン", 120000);
_dataTable.Rows.Add("P002", "USBメモリ", 2500);
_dataTable.Rows.Add("P003", "液晶モニター", 35000);
}
private void InitializeDataGridView()
{
dataGridView1.DataSource = _dataTable;
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
// ボタンのクリックイベントを購読
btnGetCell.Click += BtnGetCell_Click;
}
/// <summary>
/// 「セル値取得」ボタンのクリックイベント
/// </summary>
private void BtnGetCell_Click(object? sender, EventArgs e)
{
var celllValue = this.dataGridView1.Rows[1].Cells["Name"].Value?.ToString();
MessageBox.Show(
$"2行目の「Name」列の値: {celllValue}",
"セル値取得", MessageBoxButtons.OK, MessageBoxIcon.Information
);
}
}

サンプルアプリケーション

DataGridView_GetSpecificCell.zip
※ サンプルアプリケーションは、.NET 10 をターゲットに作成しています。

実装のポイント

1. 列の指定は「列名」でも「数字」でもOK

サンプルコードでは Cells["Name"] と列の名前で指定していますが、ここを列インデックス(番号)に変えても同じように動きます。

今回のデータは左から「ID(0番目)」、「Name(1番目)」、「Price(2番目)」の順番で並んでいるため、以下のように書くことも可能です。

// 列名ではなく、左から2番目(インデックス1)という数字の指定でも動きます
var cellValue = this.dataGridView1.Rows[1].Cells[1].Value?.ToString();
  • 列名指定("Name":後から列の順番をマウスで入れ替えても、狙った列の値を正確に取れるため安全です。
  • 数字指定(1:初見で何番目かが分かりやすく、短いコードで書けるメリットがあります。

2. 「2行目」を取り出すときは Rows[1]

プログラムでは、配列やコレクションの添え字は 0 から数え始めます。

  • 1行目 ➡️ Rows[0]
  • 2行目 ➡️ Rows[1]
  • 3行目 ➡️ Rows[2]

そのため、コード内の Rows[1] は「上から2番目の行」を指している点に注意してください。

3. null 安全の ?.ToString()

セルの値を取得するコードの末尾にある ?.ToString() は、C# の便利な安全機能です。 もし選んだセルがたまたま「空っぽ(未入力)」だった場合、これをつけておけばプログラムがエラーで強制終了するのを防ぎ、自動的に空文字として安全に処理してくれます。

まとめ

DataGridView から値を取得する基本は、Rows[行].Cells[列].Value の形です。

  • 行の指定は 0 から数える(2行目は Rows[1]
  • 列の指定は "Name" のような 列名 でも、1 のような 左からの番号 どちらでも動く
  • セルが空のときのエラー対策として ?.ToString() を最後につけておく

Windows Forms の画面開発の参考になりましたら幸いです。


💬 コメント