SHOEISHA iD

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

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

ComponentZine(InputMan)

日付入力をカレンダーから行うWPFアプリケーションの作成

PowerTools InputMan for WPF 1.0JのGcDateTimeコントロールを使ったWPFアプリケーションの作成

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

WPFアプリケーションの作成

 さっそく、GcDateTimeコントロールを使ってWPFアプリケーションを作成しましょう。今回作成するアプリケーションは、簡単な休暇申請フォームで、休暇開始日と終了日、申請年月日をGcDateTimeコントロールで入力し、休暇日数を表示します。また、チェックボックスを使って西暦・和暦表示を切り替えられるようにします。

GUIのデザイン

 メインのコントロールはGcDateTimeコントロールで、それ以外にComboBox、Label、TextBox、Button、Borderコントロールでページを構成します。2つのComboBoxコントロールには、それぞれ休暇目的と所属名をリストに組み込みます。文字の表示はすべてLabelコントロールを使用しています(GcDateTimeコントロールの設定は、後述します)。

コントロールのレイアウト
コントロールのレイアウト

GcDateTimeコントロールの作成

 GcDateTimeコントロールは、全部で3つ作成し、配置します。それぞれ、入力書式と表示書式をプロパティウィンドウで設定します。

入力・表示書式の設定

 ツールボックスからGcDateTimeコントロールをドラッグ&ドロップします。

 デフォルトでは、入力・表示とも「2011/08/16 11:02:58」と、日付と時刻の表示になっています。これを、次のように入力用と表示用が違う表示になるように設定します。

デフォルト(日付と時刻の表示)と設定後
デフォルト(日付と時刻の表示)と設定後

 配置した最初のGcDateTimeコントロールを選択し、プロパティウィンドウの「フィールドセット」を展開します。「DisplayFieldSet」と「FieldSet」の2つのプロパティが表示されます。「DisplayFieldSet」が表示書式で、「FieldSet」が入力書式を設定するオブジェクトです。

 では、入力書式を設定します。「FieldSet」の入力欄にある[...]ボタンを押すと、「入力書式の設定」ダイアログが表示されます。ここから、[yyyy年MM月dd日]を選びます。これで、入力時は年月日だけが表示されるようになります。

「入力書式の設定」ダイアログで書式を選ぶ
「入力書式の設定」ダイアログで書式を選ぶ

 ダイアログを閉じ、プロパティウィンドウに戻って「DisplayFieldSet」の入力欄にある[...]ボタンを押します。今度は、「表示書式の設定」ダイアログが表示されるので、ここから[yyy年M月d日 (dddd)]を選びます。これで、入力データが曜日表示付きの年月日で表示されます。

「表示書式の設定」ダイアログで曜日表示付きの年月日を選ぶ
「表示書式の設定」ダイアログで曜日表示付きの年月日を選ぶ

 残り2つのGcDateTimeコントロールも、同じように入力・表示書式を設定します。

表示書式のフィールドのデザイン

 次に、表示書式の年と曜日の文字色・背景色を変更します。デザインペインで、最初に配置したGcDateTimeコントロールの[年]の部分をクリックします。プロパティウィンドウが「DateYearDisplayField」クラスのプロパティに入れ替わるので、[ブラシ]をクリックして展開します。ここで、文字色や背景色を設定します。

[年]の部分をクリックし[ブラシ]をクリックして展開
[年]の部分をクリックし[ブラシ]をクリックして展開

 ここでは、カラーパレットを使ってBackgroundを「#FFD755C2」に、Foregroundを「Cornsilk」にしています。

カラーパレットで色を選ぶ
カラーパレットで色を選ぶ

 次に、曜日をクリックします。プロパティウィンドウが「DateWeekdayDisplayField」クラスのプロパティに変わるので、同じように[ブラシ]をクリックして展開し、Foregroundを「Blue」にします。このようにして、表示書式の各フィールドの文字色や背景色、枠線の設定を行うことができます。

 再び、GcDateTimeコントロールをクリックし、「ブラシ」を展開してBackgroundを「Lavender」に設定します。これで、GcDateTimeコントロール全体の背景色が設定されます。同じように、残り2つのGcDateTimeコントロールも文字色、背景色を設定します。

スピンボタンの表示

 スピンボタンは、デフォルトで「AllowSpin」プロパティがTrueになっていて、使用できるようになっていますが、表示されないようになっています。そこで、「休暇終了日」用のGcDateTimeコントロールだけスピンボタンを表示状態にします。

 「休暇終了日」用のGcDateTimeコントロールをクリックし、プロパティウィンドウの「ボタン」を展開します。「SpinButtonVisibility」プロパティの値欄をクリックし、リストから「ShowAlways」を選びます。これで、GcDateTimeコントロールにスピンボタンが表示されます。

GcDateTimeコントロールにスピンボタンが表示される
GcDateTimeコントロールにスピンボタンが表示される

 スピンボタンの動作は、そのままGcDateTimeコントロールの動作範囲と同じですが、増減値は「SpinIncrementValue」で行います。

 また、スピン機能による値の増減は、フィールド単位あるいは値全体のいずれかに対して行うことができます。SpinModeプロパティをDateSpinMode.Fieldに設定すればフィールド単位で、DateSpinMode.Valueに設定すれば値全体に対して値の増減が行われます。

SpinModeプロパティの値
プロパティ 説明
DateSpinMode.Field キャレットの位置に存在するフィールドに対して値の増減を行います。増減値はSpinIncrementプロパティで設定します。なお、リテラルフィールド上にキャレットがある場合、スピン機能は無効になります。
DateSpinMode.Value キャレットの位置に関わらず、値全体に対して値の増減を行います。増減値はSpinIncrementValueプロパティで設定します。

次のページ
取得休暇日数の計算処理

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

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

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6112 2018/03/15 15:50

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング