【C#】DataGridViewの列に日付を追加する方法|DateTimeで簡単実装

目次

経緯

C#でDataGridViewを使用している中で、「各列に日付を表示したい」と考える場面がありました。
Excelのように、1列ごとに日付を並べて表示する形式です。今回は、DateTime構造体を使って日付の列を自動生成する方法を学びましたので、その実装方法を紹介いたします。


DateTimeを使って列ヘッダーに日付を追加する

以下のコードでは、2023年1月1日から31日間分の日付を、列としてDataGridViewに追加していく処理を実装しています。

// DataGridViewに表示する列数を指定する
int columnCount = 31;

// 日付のフォーマットを指定する(例:1/1, 1/2, ...)
string dateFormat = "M/d";

// 開始日を設定する
DateTime date = new DateTime(2023, 1, 1);

// 列幅の自動調整モードを設定する
dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.ColumnHeader;

// 日付を列として追加する
for (int i = 0; i < columnCount; i++)
{
    string headerText = date.ToString(dateFormat);
    dataGridView1.Columns.Add(headerText, headerText);
    date = date.AddDays(1);
}

コードの解説

  • columnCount:追加する列数を指定します。今回は31列(1か月分)です。
  • dateFormat:日付の表示形式を文字列で定義しています。例:「M/d」は「1/1」「1/2」のような表記になります。
  • date:開始日をDateTimeで定義します。任意の日付からスタート可能です。
  • AutoSizeColumnsMode:列幅の自動調整を行うための設定で、今回は列ヘッダーに合わせるモードを指定しています。
  • forループ:日付を1日ずつ増加させながら、列を追加しています。列ヘッダーと内部名の両方に日付文字列を使っています。

実行結果のイメージ

このコードを実行すると、DataGridViewに以下のような日付が列として表示されます。

1/11/21/31/31

それぞれの列は、DataGridViewのヘッダーとして日付が設定されており、Excel風のスケジュールやカレンダー表示にも応用可能です。


まとめ

DataGridViewの列に日付を表示したい場合は、DateTimeを利用してループ処理を行うことで、簡単に実現できます。
ポイントは、日付のフォーマットを任意に指定できることと、ループによる自動生成により可変的なカレンダー構造を作れる点です。

本記事の方法を応用すれば、たとえば月ごとに列数を変えたり、曜日も併せて表示するなど、さらに柔軟な表現も可能です。

少しでも参考になれば幸いです。
ここまでお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次