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

DateTimePickerでカレンダーをクローズしたら...

分類:[.NET]

環境/言語:[XP/VB.NET] 
分類:[.NET] 
.NET Framework:[1.1]

はじめまして、こんにちは。

FormにDateTimePickerを配置し、DateTimePickerのFormatプロパティをCustomに、
CustomFormatプロパティを"yyyy/MM/dd"に設定して使用しています。
このコントロールがフォーカスを受け取ると、yyyyなりMMなりddといった
セパレータで区切られた値しか選択状態になりません。
それが原因なのか?.SelectAllメソッドが存在しません。

DateTimePickerに直接値を入力した場合は良いのですが、カレンダーを
ドロップダウンしてマウスクリックを行った場合、カレンダーがクローズした後
カーソルが見えなく成ってしまいます。

で、安易にCloseUpイベントで.SelectAllしてやろうと思ったのですが、
そうもいかず困ってしまいました。

何か目から鱗が落ちる様な良いアイディアは無いものでしょうか?
こんにちは、じゃんぬ です。

■No12619に返信(みそさんの記事)
> それが原因なのか?.SelectAllメソッドが存在しません。
> DateTimePickerに直接値を入力した場合は良いのですが、カレンダーを
> ドロップダウンしてマウスクリックを行った場合、カレンダーがクローズした後
> カーソルが見えなく成ってしまいます。

ただし、Select メソッドはあります。
2005/09/06(Tue) 10:04:06 編集(投稿者)


じゃんぬさん こんにちは。

> ただし、Select メソッドはあります。

Select メソッドを実行せずともコントロールは
アクティブになっているのですが、カーソルは
ドロップダウンが非表示になった後でもカレンダーに
残ってしまう様で、テキストの方に戻って来ないのです。

その状態では[Tab]キーで一旦次のコントロールに
フォーカスを遷移し、[Shift]+[Tab]でDateTimePickerに
戻って来ても、フォーカスがどこにあるか判らない
状態のままなのです。

【あとで気付いたので若干追記】
DateTimePickerのSelectメソッドには第一引数、第二引数がないので
通常のTextBoxの様に何バイト目から何バイトを選択するという
使い方が出来なかったのです。
とりあえずCloseUp時にカレンダー部から
フォーカスを押し出す様な形にしました。

With dtpManagementDate
.ShowUpDown = True
.ShowUpDown = False
.Focus()
End With

SelectNextControlなんてなかった6.0の頃に[Enter]キー押下で
次のコントロールにカーソルを遷移するのに使ってた。
.Enabled = False
.Enabled = True
と同じ考え方ですね。

他に良い考えが閃くまでコレで行きたいと思います。
ということで、とりあえず解決です。
解決済み!

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