DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DateTimePickerコントロールについて

環境/言語:[vb.NET2003 Professional .NET Framework1.1]
分類:[.NET]

いつも参考にさせて貰ってます。
本日、解らない事があるので質問させてください。
内容は以下のとおりです。

Form起動時にDateTimePickerのチェックボックスが付いていない状態で
なおかつシステム日付が表示されるようにしたいのですが出来ません。

処理内容としては以下の事を行っております。

フォームにDateTimePickerコントロールを貼付ける。
DateTimePickerのプロパティでShowCheckBox = Trueにしておく。


Formロード時にDateTimePickerの初期表示設定をする処理(InitPicker)を呼びます。

Private Sub InitPicker()
DateTimePicker1.Text = Today.ToString
DateTimePicker1.Checked = False
End Sub

この処理を通すとシステム日付で表示されるのですが
チェックボックスにチェックがついてしまいます。

理由がまるで解らないので、ご教授していただければと思います。
宜しくお願いします。
どもです。
>DateTimePicker1.Checked = Falseについてですが,

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsdatetimepickerclasscheckedtopic.asp

に書いてありましたが,
===================================
Value プロパティに有効な日付/時刻値が設定されているかどうか、その値を変更できるかどうかを示す値を取得または設定します。
===================================
なので,『チェックボックスのチェック』とは
関係ないみたいですよ。
こんにちは、じゃんぬ です。

■No12084に返信(めひこさんの記事)
> Formロード時にDateTimePickerの初期表示設定をする処理(InitPicker)を呼びます。

InitializeComponent でやるべきです。
つまりデザイナからそのように初期値を配置すればこの現象は起きません。(でした)

> Private Sub InitPicker()
>   DateTimePicker1.Text = Today.ToString
>   DateTimePicker1.Checked = False
> End Sub

Text プロパティではなく、Value プロパティを使うのが望ましいです。

> この処理を通すとシステム日付で表示されるのですが
> チェックボックスにチェックがついてしまいます。

回避策をコードで書くならば、

Private Sub InitPicker()
  DateTimePicker1.ShowCheckBox = False
  DateTimePicker1.Value = DateTime.Today
  DateTimePicker1.ShowCheckBox = True
End Sub

こんな感じになると思います。

> 理由がまるで解らないので、ご教授していただければと思います。

CheckBox の Checked が true になった時に、TabStop が true にされるのと同じく、仕様だと思います。
なおこ(・∀・)様、じゃんぬねっと様

すばやい、回答ありがとうございます。

>InitializeComponent でやるべきです。
>つまりデザイナからそのように初期値を配置すればこの現象は起きません。(でした)

すいません。説明が不十分でした。
今、登録画面を作成していまして、通常日付は登録しない項目なのですが、
ユーザが登録したい時だけ、チェックを入れてその日付を登録するようなものを作ろうとしています。

登録後は画面を初期状態に戻す為に、初期化するInitPickerを作成しました。
じゃんぬねっと様に教えていただいた方法で処理を書くと初期起動時は問題なく表示されるのですが
登録終了後InitPickerを呼び出すとピカッと光る状態になります。
ShowCheckBoxプロパティをFalse→Trueに設定している為?!

なおこ(・∀・)様のご指摘のURLを見るとどうやら、私のDateTimePickerのCheckプロパティの使い方に誤りがあったようで、
CheckBoxコントロールとDateTimePickerコントロールを並べて表示する方法で代替できそうです。

じゃんぬねっと様の名前はよく拝見します。そして知識の豊富さに関心させられっぱなしです。少しでも近づけるようにがんばります。
また、質問するときは宜しくお願いします。今度は処理の説明の省略をしないでちゃんと書くようにいたします。
ありがとうございます。

DOBON.NET | プログラミング道 | プログラミング掲示板