日付入力について

Windowsのデスクトップアプリを作っているときに日付入力についていろいろ調べたので忘れないうちにメモしておきます。



WinFormにはDateTimePickerという部品がある。


コンボボックスのように右端に「▼」がある。これをクリックするとカレンダーが表示される。


選んだ日付はValueプロパティで得られる。


値を見ると日付だけでなく時分秒も付いてます。

それなら時分秒はどうやって入力するの?といえば、Formatプロパティで設定できます。


上はShort、下はTimeを設定したもの。ついでにShowUpDownプロパティをTrueにしてみた。

ちなみに、DateTimePickerでは、左右の矢印キーを押して年、月、日を順に選べる。上下の矢印キーを押すと値を増減できる。なかなか便利。

ひとつの部品で年月日と時分秒をあわせて入力することもできる。FormatプロパティをCustomにして、CustomFormatプロパティに「yyyy/MM/dd HH:mm:ss」を設定する。HHは24時間表示。




日付の入力欄で悩むのが、日付を入力しないケースをどうするか。たとえば、開始日と終了日を入力するとして、開始日は今日で、終了日は未来なので空欄にしたい。

DateTimePickerでは空欄はできないけれど、チェックボックスのオフで表現するみたい。



上の図はShowCheckBoxプロパティをTrueにしたもの。チェックボックスをオフにするとグレイな日付になって空データという感じになる。


でも、Valueプロパティは空データではないので注意。Checkedプロパティもチェックすること。



DateTimePickerで困るのは、日付のコピーや貼り付けができないこと。上の図で云うと、「2014年8月13日」という日付をコピーしてエクセルやメモ帳に貼り付けるということはできない。逆にエクセルの日付データをDateTimePickerに貼り付けることもできない。まさに日付を選択できるだけの部品。






コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。