SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(CalendarGrid)(AD)

CalendarGrid for Windows Formsで、カレンダー機能のデータをプログラムから扱う

CalendarGrid for Windows Formsを活用したWindowsフォームアプリケーションの作成

  • このエントリーをはてなブックマークに追加

プログラムによるデータ変更(1)

 CalendarGridコントロールの機能的な特徴と、セルの編集が容易な点を見てきました。

 続いては、プログラムから日付データを扱う場合を見ていきましょう。

各日付に対応するクラス

 カレンダーに入力した予定とその概要を、プログラムから動的に表示したいというケースを想定します。

 まず、各日付に対応するクラスを以下のように定義します。

カレンダーの一日に対応するクラス
/// <summary>
/// カレンダーの一日のデータを表すクラス
/// </summary>
public class CalendarData
{
    /// <summary>
    /// 日付
    /// </summary>
    public DateTime date { set; get; }

    /// <summary>
    /// タイトル
    /// </summary>
    public string title { set; get; }

    /// <summary>
    /// 概要
    /// </summary>
    public string description { set; get; }
}

 カレンダー上に表示する日付を表すDateTime型の変数dateと、予定名を表すtitleと予定の概要を表すdescriptionという、2つのstring型の変数があるクラスを用意します。

 descriptionは長くなることも想定して、デザイナで上下2行のセルを結合したセルを作成しておきます。

結合したセルを用意する
結合したセルを用意する

DataSourceプロパティにリストを代入する

 CalendarGridにデータを渡すにはDataSourceプロパティにデータのリストを代入します。

 画面に配置したCalendarGridコントロールは、Nameプロパティに「gcCalendarGrid1」という値が設定されているものとします。

データのリストをコントロールに渡す
// リストを作成する
List<CalendarData> dataList = new List<CalendarData>();
dataList.Add(new CalendarData() { date = new DateTime(2016, 1, 1), title = "初詣", description = "神社に行ってお参りをする。" });
dataList.Add(new CalendarData() { date = new DateTime(2016, 1, 4), title = "仕事はじめ", description = "朝10時に出社" });

// DataSourceプロパティにリストを代入する
gcCalendarGrid1.DataSource = dataList;

 続いて、CalendarDataクラスのdateプロパティがカレンダーの表示する日付に紐づくことを指定します。

dateプロパティがカレンダーの日付と対応することを指定する
// dateプロパティをカレンダーの日付に紐づける
gcCalendarGrid1.DateField = "date";

タイトルと概要を紐づける

 CalendarDataクラスの残りのプロパティtitle、descriptionもCalendarGridと紐づけます。

 CalendarGridの各日付セル内に表示するデータは、CalendarGridのTemplateプロパティのテンプレートに紐づけることで対応させることができます。

リストの項目をテンプレートに紐づける
// テンプレートにリストの項目を紐づける
var template = gcCalendarGrid1.Template;

// セルの上から2行目、左から0列目にtitleプロパティの値を表示する
template.Content[1, 0].DataField = "title";

// セルの上から3行目、左から0列目にdescriptionプロパティの値を表示する
template.Content[2, 0].DataField = "description";

次のページ
プログラムによるデータ変更(2)

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(CalendarGrid)連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/9190 2016/02/03 11:45

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング