■ 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