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
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 の画面開発の参考になりましたら幸いです。
💬 コメント