【Winforms】DataSetを使ったデータ操作を学ぼう!(デザインツールを使う)

2025年9月3日

以下に、デザインツールを使ったDataGridViewの作成手順と、それに合わせたコードの記述方法を説明します。


1. デザインツールでDataGridViewを作成する手順

手順 1: DataGridViewをフォームに追加

  1. フォームデザイナーを開く:
    • ソリューションエクスプローラーでForm1.cs(またはフォーム名)をダブルクリックして開きます。
  2. ツールボックスからDataGridViewを追加:
    • Visual Studioの右側にあるツールボックスからDataGridViewを選択し、フォーム上にドラッグ&ドロップします。
  3. プロパティを設定:
    • DataGridViewを選択してプロパティウィンドウを開きます。
    • 以下のプロパティを設定します(必要に応じて):
      • Name: dataGridView1(デフォルトで設定される名前でもOK)。
      • Dock: Fill(フォーム全体に表示する場合)。
      • AutoSizeColumnsMode: Fill(列幅を自動調整)。

手順 2: コードでデータをバインド

デザインツールで配置したDataGridViewにデータを表示するには、コードでDataSetを使ってデータを取得し、DataGridViewにバインドします。

以下はそのコード例です:

using System.Data;
using Microsoft.Data.SqlClient;
using System.Windows.Forms;

namespace CodeCreateDataSet
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            // ※ 開発環境向けの例。運用は適切な証明書を配備し TrustServerCertificate は外す
            string connectionString =
                "Server=YOUR_SERVER;Database=YOUR_DB;User ID=...;Password=...;Encrypt=True;TrustServerCertificate=True";

            string query = "SELECT EmployeeID AS 社員ID, Name AS 氏名, Department AS 部署名 FROM Employees";

            using var connection = new SqlConnection(connectionString);
            using var adapter   = new SqlDataAdapter(query, connection);

            var dataSet = new DataSet();
            connection.Open();            // OpenAsyncでも可(Fill は同期API)
            adapter.Fill(dataSet, "Employees");
            dataGridView1.DataSource = dataSet.Tables["Employees"];
        }
    }
}

SQL接続なしで、ローカルの DataSet / DataTable を作って DataGridView に表示するサンプルに差し替えます(dataGridView1 はデザイナで配置済み想定)。

using System;
using System.Data;
using System.Windows.Forms;

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        // 1) ローカルの DataSet / DataTable を用意
        var dataSet = new DataSet();
        var table = new DataTable("Employees");

        // 2) 列を定義(表示名として日本語の列名を使用)
        table.Columns.Add("社員ID", typeof(int));
        table.Columns.Add("氏名", typeof(string));
        table.Columns.Add("部署名", typeof(string));

        // 3) ダミーデータを追加(必要に応じて置き換え/追加してください)
        table.Rows.Add(1001, "山田 太郎", "開発");
        table.Rows.Add(1002, "佐藤 花子", "総務");
        table.Rows.Add(1003, "鈴木 次郎", "営業");

        // 4) DataSet に登録
        dataSet.Tables.Add(table);

        // 5) DataGridView にバインド
        dataGridView1.AutoGenerateColumns = true; // 自動生成でOK(必要なら false にして列を手動定義)
        dataGridView1.DataSource = dataSet.Tables["Employees"];
    }
}

補足:

  • フィルタや並び替えを簡単にしたい場合は BindingSource を噛ませると便利です。
var bs = new BindingSource { DataSource = dataSet.Tables["Employees"] };
dataGridView1.DataSource = bs;
// 例: 氏名で昇順
bs.Sort = "氏名 ASC";
  • もしフォームに dataGridView1 を置いていない場合は、コードで生成しても構いません。
dataGridView1 = new DataGridView { Dock = DockStyle.Fill };
Controls.Add(dataGridView1);

2. デザインツールを使う利点

  1. 視覚的に配置できる:
    • フォーム上でサイズや位置を調整しやすい。
    • プロパティウィンドウを使って簡単に設定変更可能。
  2. 手動でのコーディングが減る:
    • DataGridViewの基本設定(列幅やスタイルなど)はデザインツールで完了。
    • コードでデータ取得とバインドだけに集中できる。
  3. プロトタイプ作成に最適:
    • 初学者や短期間で結果を見せたい場合に便利。

3. 注意点

  1. DataGridViewの名前を確認:
    • デザインツールで配置した際、自動生成された名前(例: dataGridView1)がコードと一致していることを確認。
  2. 列の定義が必要な場合:
    • 自動生成された列ではなく、特定の列をカスタマイズしたい場合は、以下のように列を手動で追加することも可能です:
dataGridView1.Columns.Add("EmployeeID", "社員ID");
dataGridView1.Columns.Add("Name", "氏名");
dataGridView1.Columns.Add("Department", "部署名");
  1. デザイン変更の影響に注意:
    • デザインツールでDataGridViewの構造を変更した場合、コードの変更が必要になることがあります。

4. 実行した際の画面イメージ

以下のような画面が表示されます:

+--------+--------+--------+
| 社員ID | 氏名   | 部署名 |
+--------+--------+--------+
| 1      | 山田 太郎 | 総務部 |
| 2      | 佐藤 花子 | 営業部 |
| 3      | 鈴木 一郎 | IT部   |
| 4      | 高橋 和子 | 人事部 |
| 5      | 田中 次郎 | 経理部 |
+--------+--------+--------+

5. デザインツールとコードの併用の流れ

  1. デザインツールでDataGridViewをフォームに配置:
    • 見た目を整え、初期設定をプロパティウィンドウで設定します。
  2. コードでDataGridViewにデータをバインド:
    • データベースから取得したデータをバインドして動作確認を行います。

結論

デザインツールでDataGridViewを作成しても問題ありません
視覚的に配置しやすく、プロジェクトの効率を上げることができます。
その後、コードを補完して動的なデータ操作を追加すれば、学習効果も実践力も高まります。

訪問数 80 回, 今日の訪問数 5回

C#,データベース

Posted by hidepon