DateTimePicker については、わんくま内でおぎわらさんやえムナウさんも既に興味深い記事を書かれています。
私が今まで使った事がなかったのが、DropDownAlign プロパティと、CalendarFont とか CalendarForeColor とか。
なので、それで遊んでみました。
ShowCheckBox にしておいて、Checked を False にしても Check が外れない。
ここでも話題になっていたようですが、
DateTimePicker の Checked プロパティの説明をよくよく読んでみると、
[引用]
プロパティ値
Value プロパティに有効な DateTime 値が設定され、その表示された値を更新できる場合は true。それ以外の場合は false。既定値は true です。
[/引用]
と書いてあります。つまり、更新するしないの機能と Value の値が妥当であるかの検証を同じプロパティで実現しているってことなんでしょうか。
Value を先にセットして、それが妥当かどうかのチェックを終らせた後に Checked = False とやるといけるようです。
■参考文献
[Tips][WinForm]DateTimePickerで時間を表示させる方法(おぎわらさん)
DateTimePickerで和暦を表示させる(えムナウさん)
日付と時刻の書式指定文字列
DateTimePicker コントロール (Windows フォーム)
DateTimePicker クラス
DateTimePickerFormat 列挙体
.NET TimePicker
■実行画像
DropDownAlign = LeftRightAlignment.Right
色やフォントを変えたカレンダ
Public Class DateTimePickerTest
Private Sub DateTimePickerTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'' DateTimePickerFormat で表示形式を変える
' コントロールパネル→地域と言語のオプション→長い形式 に依存
Me.Label1.Text = "Long"
Me.DateTimePicker1.Format = DateTimePickerFormat.Long
' コントロールパネル→地域と言語のオプション→短い形式 に依存
Me.Label2.Text = "Short"
Me.DateTimePicker2.Format = DateTimePickerFormat.Short
' コントロールパネル→地域と言語のオプション→時刻 に依存
Me.Label3.Text = "Time"
Me.DateTimePicker3.Format = DateTimePickerFormat.Time
' カスタム書式
Me.Label4.Text = "Custom"
Me.DateTimePicker4.Format = DateTimePickerFormat.Custom
Me.DateTimePicker4.CustomFormat = "yyyy-MM-dd(dddd) hh:mm:ss"
'' ShowUpDown プロパティ(規定値は False)
Me.Label5.Text = "ShowUpDown"
Me.DateTimePicker5.ShowUpDown = True
'' DropDownAlign プロパティ(規定値は LeftRightAlignment.Left)
Me.Label6.Text = "DropDownAlign.Right"
Me.DateTimePicker6.DropDownAlign = LeftRightAlignment.Right
'' ShowCheckBox プロパティ
Me.Label7.Text = "ShowCheckBox"
Me.DateTimePicker7.ShowCheckBox = True
' 選択する日付を翌日にする
Me.DateTimePicker7.Value = DateTime.Today.AddDays(1.0)
Me.DateTimePicker7.Checked = False
' 下限と上限を設定
Me.DateTimePicker7.MinDate = New DateTime(2006, 1, 1)
Me.DateTimePicker7.MaxDate = New DateTime(2007, 1, 1)
'' 予定表の部分の色を変える
Me.Label8.Text = "CalendarColor"
Me.DateTimePicker8.CalendarFont = New Font("Goudy Stout", 20.0F, GraphicsUnit.Pixel)
Me.DateTimePicker8.CalendarForeColor = Color.Navy
Me.DateTimePicker8.CalendarMonthBackground = Color.LightBlue
Me.DateTimePicker8.CalendarTitleBackColor = Color.Navy
Me.DateTimePicker8.CalendarTitleForeColor = Color.LightBlue
Me.DateTimePicker8.CalendarTrailingForeColor = Color.White
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Console.WriteLine("====DateTimePicker1(長い形式)====")
Console.WriteLine(Me.DateTimePicker1.Value.ToString())
Console.WriteLine(Me.DateTimePicker1.Text)
Console.WriteLine("====DateTimePicker2(短い形式)====")
Console.WriteLine(Me.DateTimePicker2.Value.ToString())
Console.WriteLine(Me.DateTimePicker2.Text)
Console.WriteLine("====DateTimePicker3(時刻)====")
Console.WriteLine(Me.DateTimePicker3.Value.ToString())
Console.WriteLine(Me.DateTimePicker3.Text)
Console.WriteLine("====DateTimePicker4(カスタム書式)====")
Console.WriteLine(Me.DateTimePicker4.Value.ToString())
Console.WriteLine(Me.DateTimePicker4.Text)
Console.WriteLine("====DateTimePicker5(ShowUpDown)====")
Console.WriteLine(Me.DateTimePicker5.Value.ToString())
Console.WriteLine(Me.DateTimePicker5.Text)
Console.WriteLine("====DateTimePicker6(DropDownAlign)====")
Console.WriteLine(Me.DateTimePicker6.Value.ToString())
Console.WriteLine(Me.DateTimePicker6.Text)
Console.WriteLine("====DateTimePicker7(ShowCheckBox)====")
Console.WriteLine(Me.DateTimePicker7.Value.ToString())
Console.WriteLine(Me.DateTimePicker7.Text)
Console.WriteLine("====DateTimePicker8(予定表の色)====")
Console.WriteLine(Me.DateTimePicker8.Value.ToString())
Console.WriteLine(Me.DateTimePicker8.Text)
' DateTimePicker1.Value ~ DateTimePicker7.Value の間隔を求める
Dim span As TimeSpan = Me.DateTimePicker7.Value.Subtract(Me.DateTimePicker1.Value)
Console.WriteLine("====DateTimePicker1.Value ~ DateTimePicker7.Value の間隔====")
Console.WriteLine(span.TotalDays.ToString() & "日間")
Console.WriteLine(span.TotalHours.ToString() & "時間")
Console.WriteLine(span.TotalMinutes.ToString() & "分")
Console.WriteLine(span.TotalSeconds.ToString() & "秒")
Console.WriteLine(span.TotalMilliseconds.ToString() & "ミリ秒")
End Sub
End Class