MonthCalendar(月カレンダー)コントロールとディクショナリーを使ったWinFormアプリケーションの実装

2024年8月28日

この資料では、MonthCalendarコントロールで選択した日付をキー、テキストボックスに入力された内容を値としてディクショナリーに保存・管理する方法について説明します。このサンプルは、日付ごとのメモを管理するアプリケーションの基本的な実装方法を示します。

前提条件

  • C#とWinFormsの基本的な知識
  • Visual Studioがインストールされた開発環境

手順

1. プロジェクトの作成

Visual Studioで新しいC#のWinFormsプロジェクトを作成します。

2. フォームデザイン

以下のコントロールをフォームに追加します:

  • MonthCalendar(名前は calendar
  • TextBox(名前: memoArea
  • Button(名前: Save, テキスト: “保存")

3. コードの実装

以下のコードをForm1.csに記述します。

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace MonthCalendarDictionarySample
{
    public partial class Form1 : Form
    {
        // 日付とメモを保存するディクショナリー
        private Dictionary<DateTime, string> notes;

        public Form1()
        {
            InitializeComponent();
            // ディクショナリーの初期化
            notes = new Dictionary<DateTime, string>();
        }

        private void Calendar_DateSelected(object sender, DateRangeEventArgs e)
        {
            DateTime selectedDate = e.Start;

            // 選択された日付がディクショナリーに存在する場合、その値をメモエリアに表示
            if (notes.ContainsKey(selectedDate))
            {
                memoArea.Text = notes[selectedDate];
            }
            else
            {
                memoArea.Text = string.Empty;
            }
        }

        private void Save_Click(object sender, EventArgs e)
        {
            DateTime selectedDate = calendar.SelectionStart;
            string memo = memoArea.Text;

            // 選択された日付が既にディクショナリーに存在する場合、値を更新
            if (notes.ContainsKey(selectedDate))
            {
                notes[selectedDate] = memo;
            }
            else
            {
                // 新しい日付とメモをディクショナリーに追加
                notes.Add(selectedDate, memo);
            }

            MessageBox.Show("メモが保存されました。", "保存", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

4. 実行

プロジェクトをビルドして実行します。MonthCalendarから日付を選択し、メモを入力して「保存」ボタンをクリックすると、ディクショナリーにデータが保存されます。同じ日付を再度選択すると、保存されたメモが表示されます。

実装詳細

この実装では、MonthCalendarで選択した日付をキー、テキストボックスに入力された内容を値とするディクショナリーを使用しています。ユーザーが新しい日付を選択すると、その日付に関連するメモがテキストボックスに表示され、保存ボタンを押すことでディクショナリーに登録・更新されます。

応用例

このサンプルコードを基に、日記アプリやイベント管理アプリなど、日付に関連するデータを管理する様々なアプリケーションを開発できます。

結論

この資料では、MonthCalendarコントロールとディクショナリーを使用した基本的なメモ管理アプリケーションの実装方法を紹介しました。ぜひプロジェクトに応用してみてください。

参考文献

この資料は、日付管理機能を持つアプリケーション開発の基本的な指針として役立つことを目的としています。