- ベストアンサー
VB2005 DateTimePickerのカレンダー表示制御
お世話になります。 現在、DataGridViewの制御に合わせてカレンダーを表示したりしようと しているのですが、MonthCalendarだと日付「範囲」が選択できて しまうようなので、あまり嬉しくない状況です。 そこで、DateTimePickerを使用して、ロジックで強制的にカレンダーを 表示したり非表示にしたりしたいと思っています。 表示の方は、ググってみたら何とか検索できたので、それを基に やってみたら成功したのですが、カレンダーを閉じる方の処理が うまくいきません。 コントロール(サブクラス)側でEscapeキーをWndProcで送ったり してみたのですが…… 正しいやり方をご存知の方がいらっしゃいましたら、お教えください。 または、MonthCalendarで単一日付のみを選択する方法を教えて頂くのでも 構いません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>MonthCalendarだと日付「範囲」が選択できてしまうようなので、 MaxSelectionCount = 1 では? (VisualBasic2005 ExpressEditionです)
その他の回答 (1)
- Oh-Orange
- ベストアンサー率63% (854/1345)
★MonthCalendar のアドバイス ・MCM_SETMAXSELCOUNT メッセージで選択可能な日数を 1 日にすれば良い。 本当はプロパティなどで最初から 1 日選択にすべきですが、VB は詳しくないため 動的に SendMessage などで設定して下さい。 ・私は C/C++言語系でしてダイアログ・エディタで Multiselect という項目を false に すれば1日しか選択できなくなります。VC++ では初期値が false です。VB は true に なっているのでしょうか。プロパティを見て true なら false にすれば MCM_SETMAXSELCOUNT メッセージで設定しなくてもいいはずです。確認を。 サンプル: SendMessage( カレンダーコントロールのハンドル, MCM_SETMAXSELCOUNT, 選択可能な日数, 0 ) ↑ API 関数で変更して下さい。選択可能な日数を 1 にすれば良いでしょう。 以上。
お礼
ありがとうございます。 私も始めはMultiSelectプロパティぐらいあるだろうと思っていたんですが…(汗) SendMessageだと…WndProcでもOKですかね? あ、でもサブクラス化しないと面倒か… 何はともあれ、ご回答ありがとうございました。
お礼
…………あ。 ありましたね(汗) ありがとうございます。気づきませんでした。