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