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

DateTimePickerでYearCalendarの表示

環境/言語:[VB.NET2010、Windows7/XP、Oracle11g]
分類:[.NET]

お世話になります。

VB.NET2010のクラサバのシステムです。
フォーム上のDateTimePickerの書式をyyyy/MMにして、
年月のみの入力をさせています。
手入力とカレンダー選択の両方を可能にしていますが、表示されるカレンダーは
通常の日にち選択のMonthCalendarではなく、月を選択するYearCalendarにすることは出来ますでしょうか?
やはりカスタムコントロールを作成しないと出来ないでしょうか?

宜しくお願いいたします。
具体的なコードは思いつきませんが、カレンダー開いて年月クリックすると、月選択のカレンダーになるので、SendMessageとか使ってみたらどうでしょうか。
■No31223に返信(K.Mさんの記事)
> 具体的なコードは思いつきませんが、カレンダー開いて年月クリックすると、月選択のカレンダーになるので、SendMessageとか使ってみたらどうでしょうか。

ご返答ありがとうございます。
しかし、私の開発環境ではカレンダーの年月をクリックしても月選択カレンダーは表示されません。
カレンダーの年をクリックすると年選択のリスト、月をクリックすると月選択パネルが表示されるだけです。
プロパティの設定などもあるのでしょうか?
■No31224に返信(Gentaさんの記事)
> しかし、私の開発環境ではカレンダーの年月をクリックしても月選択カレンダーは表示されません。
> カレンダーの年をクリックすると年選択のリスト、月をクリックすると月選択パネルが表示されるだけです。
> プロパティの設定などもあるのでしょうか?

OS によります。
Windows Vista 以上で実行していればそういった挙動を示しますが、Windows XP ではそうなりません。
OS に依存することと、将来的に動きが変わる可能性があるので、SendMessage で無理矢理操作することは推奨できません。

最初は手間がかかるかもしれませんが、自分で作った方が制御しやすいし、将来的な不安(リスク)もありません。
返信ありがとうございます。
やはりXP、Vista、7ともYearCalendarは表示しないみたいですね。(月選択のパネルと年選択のリストボックスしか表示しないですね。)
というか、色々調べましたが、どうも私の勘違いだったみたいで、標準コンポーネントでは元々不可能なようですね。
SilverLightやInputManで可能だったので混同していました。

解決には至りませんでしたが、色々とありがとうございました。

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