たきるブログ

C#やOracleなどの情報を書いています。

【C#】クールすぎるNullを許可するDateTimePicker、その名もUltraDateTimePicker

どうしても自分じゃ、スマートな自作のNull許容DateTimePickerが作り出せなくて
結局悩みまくって調べまくってたら、UltraDateTimePickerというのに出会った!!
これは本当にクール!!!!

【2017/04/12 追記】
コントロールの親を動的に変えたりだとか色々試してたら、不備があったり、既存と同様のイベント発生がされなかったりしたので、調べまくったり、色んなコードを参考にしながら自前で作っちゃいました。
※UltraDateTimePickerの仕様をすべて網羅した形ではありません。
(nullの時にテキストを表示するとか)

metroit.hatenablog.jp

NuGetに登録しました。
Metroit.Windows.Forms.2
Metroit.Windows.Forms.45


見つけたサイトはここ。
http://social.msdn.microsoft.com/forums/en-US/winforms/thread/ee0c5fbe-8d18-4899-8df2-46535b570bb4/

最新ソースの投稿日時は「Monday, January 08, 2007 9:38 PM」のやつ。
使い方も「Friday, June 15, 2007 1:36 AM」に紹介してるっぽい。
新規コンポーネントを作って、クラスファイルを全部書き換えればいい。

どうやら、ComboBoxも何か紹介してる様子。
プロパティが追加されているのは分かったけど、具体的にどう変化してるのかまでは調べてない。

それよりDateTimePicker、これは本当に素晴らしすぎる。
素晴らしい点。

  • 継承してるから、普通のDateTimePickerと見た目もプロパティも全く一緒。
  • Deleteキーで日付をNullにできる。
  • BackSpaceキーでも日付をNullにできる。
  • 日付が消えてる状態で数字を打つと、フォーマットが復活して入力可能。

これほんとに凄い。
気になる点としては、以下の2点。

  • BackSpaceキーによる日付Null制御で、ドゥン!っていう入力が拒否されたアラート音がする。
  • 日付Null状態から入力を行おうとした時、現在日時を表示してはくれない。

上の2点については自分ソースに書き換えた時に調整するつもり。
俺も含めて、日本人はまだまだダメだなぁ~って思った。

Nullable DateTimePickerも試してみたけど、それより断然いい。
Nullable DateTimePicker
このNullable DateTimePickerは正直、以下が不満過ぎる。

  • Deleteキーの日付Null制御でコントロールがちらつく。
  • 日付Null状態からの日付再入力がカレンダーからしか行えない。

日付再入力は別にちょろっと書き換えれば実現できるんだけど、それでもちらつくのがどうしょもなさすぎる。
ということで

盛り上がってまいりました!!!

こりゃあ、土日かけてUltraDateTimePickerを解析だぜ!
m_shane_txさん、本当にありがとうございます。
あなたが神だ。