DbDateTimePicker
@IT:DateTimePickerコントロールでDBNullを扱うには?[C#、VB](2008-01-31)
MSDN:DateTimePicker コントロール (Windows フォーム)
MSDN:DateTimePicker クラス
Visual C#: 15.5.4(2017)
DateTimePicker を使いたい。
だけど、null のときに日付が入ってしまうと
空欄にしておきたいユーザが、誤入力をしてしまう。
むぅ。
Google 先生に聞いてみると、色々とあるみたいだけど
ほとんどの情報が古い。。。
何で改善されないんだろう。
どこかにも書いてあったけど、DateTime 型を利用するのに
null は普通に使うと思うんだけどな~。
私の設計が悪いのかしらね。
それでも、DateTimePicker が null を許容できないことは
当時?みなさんが試行錯誤されたようで、下記のような記事を見つけた。
codeguru:Yet Another Nullable DateTimePicker Control(2005-04-25)
CodeZine:Nullを許容するDateTimePickerコントロール(2005-05-13、日本語訳記事)
現時点では、よい方針を思いつかないので
DbDateTimePicker を使ってみた。
@IT:DateTimePickerコントロールでDBNullを扱うには?[C#、VB](2008-01-31)
おおお、奇しくも後1週間で10周年w
カスタム コントロールを追加 して
自動生成ソースに、参考サイトのソースを、ちみっと調整してコピペ。
public partial class DbDateTimePicker : DateTimePicker
{
public DbDateTimePicker()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
}
[Bindable(true), Browsable(false)]
public new object Value
{
get
{
if (base.Checked)
return base.Value;
else
return DBNull.Value;
}
set
{
try
{
if (Convert.IsDBNull(value))
{
base.Checked = false;
}
else
{
base.Value = Convert.ToDateTime(value);
base.Checked = true;
}
}
catch (Exception ex)
{
base.Value = Convert.ToDateTime(value);
base.Checked = true;
}
}
}
}
アプリ側にコントロールを追加 して
フォーム上へ配置。
dbdtpDate
コントロールのプロパティから
ShowCheckBox を True