C# 開発

【C#】DataGridView

2025.02.01 DataGridView : 行を固定表示する

private void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.Columns.Add("", "都道府県");
    dataGridView1.Columns.Add("", "市区町村");
    dataGridView1.Columns.Add("", "番地");
    dataGridView1.Columns.Add("", "建物");
    dataGridView1.Columns.Add("", "部屋番号");

    dataGridView1.Rows.Add(new string[] { "東京都", "新宿区", "1-5-3", "寿荘", "101" });
    dataGridView1.Rows.Add(new string[] { "東京都", "渋谷区", "1-2-1", "高級マンション", "201" });
    dataGridView1.Rows.Add(new string[] { "東京都", "池袋", "2-3-2", "アップル荘", "103" });
    dataGridView1.Rows.Add(new string[] { "京都府", "中京区", "1-2-1", "社宅", "532" });
    dataGridView1.Rows.Add(new string[] { "京都府", "南区", "1-1-1", "平屋", "221" });

    foreach (var idx in Enumerable.Range(0, 50))
    {
        dataGridView1.Rows.Add();
    }

    // データグリッドビューの 1 行目を固定しています。これにより、縦スクロールしても 1 行目が隠れることはありません。
    dataGridView1.Rows[0].Frozen = true;
}

2025.02.01 DataGridView : 列を固定表示する

private void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.Columns.Add("", "都道府県");
    dataGridView1.Columns.Add("", "市区町村");
    dataGridView1.Columns.Add("", "番地");
    dataGridView1.Columns.Add("", "建物");
    dataGridView1.Columns.Add("", "部屋番号");
    dataGridView1.Columns.Add("", "その他1");
    dataGridView1.Columns.Add("", "その他2");
    dataGridView1.Columns.Add("", "その他3");
    dataGridView1.Columns.Add("", "その他4");
    dataGridView1.Columns.Add("", "その他5");

    dataGridView1.Rows.Add(new string[] { "東京都", "新宿区", "1-5-3", "寿荘", "101", "", "", "", "", "" });
    dataGridView1.Rows.Add(new string[] { "東京都", "渋谷区", "1-2-1", "高級マンション", "201", "", "", "", "", "" });
    dataGridView1.Rows.Add(new string[] { "東京都", "池袋", "2-3-2", "アップル荘", "103", "", "", "", "", "" });
    dataGridView1.Rows.Add(new string[] { "京都府", "中京区", "1-2-1", "社宅", "532", "", "", "", "", "" });
    dataGridView1.Rows.Add(new string[] { "京都府", "南区", "1-1-1", "平屋", "221", "", "", "", "", "" });

    // データグリッドビューの 1 列目と 2 列目を固定しています。これにより、横スクロールしてもこれらの列は隠れることはありません。
    dataGridView1.Columns[1].Frozen = true;
}

2025.02.01 DataGridView : 列ヘッダーを列幅いっぱいまで表示する

private void Form1_Load(object sender, EventArgs e)
{
    string[][] sData = { new string[] { "東京都", "新宿区" },
                         new string[] { "東京都", "渋谷区渋谷1丁目1番地の1" },
                         new string[] { "東京都", "池袋"   },
                         new string[] { "京都府", "中京区" },
                         new string[] { "京都府", "南区" } };

    dataGridView1.Columns.Add("", "都道府県");
    dataGridView1.Columns.Add("", "市区町村");

    foreach (var idx in Enumerable.Range(0, 5))
    {
        dataGridView1.Rows.Add(sData[idx]);
    }

    // データグリッドビューの列ヘッダーはデフォルトで WrapMode が有効になっています。
    // そのため、列ヘッダータイトルの右側に余分なスペースがあるにも関わらず、折り返されて表示されます。
    // これを列幅いっぱいまで表示するには、WrapMode を無効にする必要があります。

    dataGridView1.ColumnHeadersDefaultCellStyle.WrapMode = DataGridViewTriState.False;
}

2025.02.01 DataGridView : 行の高さを内容に合わせて自動調整する

private void Form1_Load(object sender, EventArgs e)
{
    string[][] sData = { new string[] { "東京都", "新宿区" },
                         new string[] { "東京都", "渋谷区渋谷1丁目1番地の1" },
                         new string[] { "東京都", "池袋"   },
                         new string[] { "京都府", "中京区" },
                         new string[] { "京都府", "南区" } };

    dataGridView1.Columns.Add("", "都道府県");
    dataGridView1.Columns.Add("", "市区町村");

    foreach (var idx in Enumerable.Range(0, 5))
    {
        dataGridView1.Rows.Add(sData[idx]);
    }

    // データグリッドビューの行の高さは内容に合わせて自動調整されます。
    // 但し事前にセルの WrapMode を true にして複数行表示しておかないと意味がないかもしれません。

    dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
    dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
}

2025.02.01 DataGridView : 列の幅を内容に合わせて自動調整する

private void Form1_Load(object sender, EventArgs e)
{
    string[][] sData = { new string[] { "東京都", "新宿区" },
                         new string[] { "東京都", "渋谷区渋谷1丁目1番地の1" },
                         new string[] { "東京都", "池袋"   },
                         new string[] { "京都府", "中京区" },
                         new string[] { "京都府", "南区" } };

    dataGridView1.Columns.Add("", "都道府県");
    dataGridView1.Columns.Add("", "市区町村");

    foreach (var idx in Enumerable.Range(0, 5))
    {
        dataGridView1.Rows.Add(sData[idx]);
    }

    dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
}

2025.02.01 DataGridView : 行列のヘッダーサイズを変更可能にする

private void Form1_Load(object sender, EventArgs e)
{
    foreach (var idx in Enumerable.Range(0, 5))
    {
        dataGridView1.Columns.Add("", Convert.ToString((char)('A' + idx)));
        dataGridView1.Rows.Add((idx + 1).ToString());
    }

    // カラムヘッダーの高さを変更可能にしています。
    // 行ヘッダーの幅も変更可能にしていますが、行ヘッダーはデフォルトで変更可能です。

    dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing;
    dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.EnableResizing;
}

2025.02.01 DataGridView : 行列の最小サイズを設定する

private void Form1_Load(object sender, EventArgs e)
{
    foreach (var idx in Enumerable.Range(0, 5))
    {
        dataGridView1.Columns.Add("", Convert.ToString((char)('A' + idx)));
        dataGridView1.Rows.Add((idx + 1).ToString());
    }

    // データグリッドビューの 3 番目の列の最小幅と 3 番目の行の最小高さを設定しています。
    // インデックス番号は 0 から始まります。

    dataGridView1.Columns[2].MinimumWidth = 100;
    dataGridView1.Rows[2].MinimumHeight = 50;
}

2025.02.01 DataGridView : 特定の行列のサイズを変更できないようにする

private void Form1_Load(object sender, EventArgs e)
{
    foreach (var idx in Enumerable.Range(0, 5))
    {
        dataGridView1.Columns.Add("", Convert.ToString((char)('A' + idx)));
        dataGridView1.Rows.Add((idx + 1).ToString());
    }

    // データグリッドビューの 2 番目の列と 2 番目の行のサイズを変更できないようにしています。
    // インデックス番号は 0 から始まります。
    // Resizable プロパティに設定する論理値は通常の true/false とは違いますので、注意が必要です。

    dataGridView1.Columns[1].Resizable = DataGridViewTriState.False;
    dataGridView1.Rows[1].Resizable = DataGridViewTriState.False;
}

-C# 開発