■ MonthCalendar
* カレンダー・コントロール * DateTimePicker があれば、そんなに使うことはなさそう
参考資料
http://www.atmarkit.co.jp/fdotnet/dotnettips/627calendardim/calendardim.html■ DateTimePicker
主なプロパティ
ShowCheckBoxプロパティ* チェックボックスで操作の有効/無効を切り替えるCheckedプロパティ
* チェックボックスのOn/Offを切り替えるhttp://hiros-dot.net/VBNET2005/Control/DateTimePicker/DateTimePicker03.htm
Format プロパティ
* 「時間表示」「日付表示」などを切り替えるhttp://www.labasp.net/CsharpNote/mControl/DateTimePicker/101_110.html#101
http://blogs.wankuma.com/ogiogi/archive/2006/05/20/25322.aspx
http://hiros-dot.net/VBNET2005/Control/DateTimePicker/DateTimePicker02.htm
使用上の注意
【1】 DateTimePickerのMax値は9999/12/31ではないhttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.datetimepicker.maxdatetime.aspx
より、抜粋 ~~~ 日付の最大値は 12/31/9998 23:59:59 に設定されます。 ~~~ なぜか「9998年」であることに注意。 設計段階などで、どうするかを考えた方がいい。
【2】空表示(null許容)ができない
サンプル
バグとその対処法
http://others2.blog.so-net.ne.jp/2012-02-12
* DateTimePickerコントロールにはnull値を入力できない対応策
=> DateTimePickerを継承し、独自で実装対応案・その1
+ 日付が有効な場合:チェックボックスがオンで日付が表示 + DBNull.Valueがセットされた場合:チェックが外れて日付部分がグレーアウト表示コメント
* 簡単に実装できるが、deleteキーを押すと怒られるので、使い勝手はいまいち。 * これなら、MaskedTextBoxの方が使いやすいと思う。(MaskedTextBoxについては以下を参照のこと)http://blogs.yahoo.co.jp/dk521123/30258884.html
サンプル
* 「ShowCheckBox = true」にしておくこと * なお、実装は以下を参考にしたhttp://www.atmarkit.co.jp/fdotnet/dotnettips/702nullpicker/nullpicker.html
using System; using System.ComponentModel; namespace Sample { class NullableDateTimePicker : System.Windows.Forms.DateTimePicker { [Bindable(true), Browsable(false)] public new object Value { get { if (base.Checked) { return base.Value; } else { return null; } } set { if(value == null || Convert.IsDBNull(value)) { base.Checked = false; return; } DateTime datetime; if (DateTime.TryParse(value.ToString(), out datetime)) { base.Value = datetime; base.Checked = true; } else { base.Checked = false; } } } } }使用方法
* ツールボックスの[コンポーネント]にある上記クラスを選択し、使用したいFromのデザイン部にドラッグ&ドロップ private void button13_Click(object sender, EventArgs e) { if (this.nullableDateTimePicker1.Value == null) { this.label1.Text = "空"; } else { this.label1.Text = this.nullableDateTimePicker1.Value.ToString(); } }対応案・その2
→以下の関連記事「DateTimePickerコントロール [2] ~Null値を許容~」を参照。https://blogs.yahoo.co.jp/dk521123/30254461.html
参考文献
http://www.atmarkit.co.jp/fdotnet/dotnettips/893dtpickercal/dtpickercal.htmlバグとその対処法
http://others2.blog.so-net.ne.jp/2012-02-12