• ベストアンサー

VB2005 DateTimePickerのカレンダー表示制御

お世話になります。 現在、DataGridViewの制御に合わせてカレンダーを表示したりしようと しているのですが、MonthCalendarだと日付「範囲」が選択できて しまうようなので、あまり嬉しくない状況です。 そこで、DateTimePickerを使用して、ロジックで強制的にカレンダーを 表示したり非表示にしたりしたいと思っています。 表示の方は、ググってみたら何とか検索できたので、それを基に やってみたら成功したのですが、カレンダーを閉じる方の処理が うまくいきません。 コントロール(サブクラス)側でEscapeキーをWndProcで送ったり してみたのですが…… 正しいやり方をご存知の方がいらっしゃいましたら、お教えください。 または、MonthCalendarで単一日付のみを選択する方法を教えて頂くのでも 構いません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

>MonthCalendarだと日付「範囲」が選択できてしまうようなので、 MaxSelectionCount = 1 では? (VisualBasic2005 ExpressEditionです)

K-Sogacchi
質問者

お礼

…………あ。 ありましたね(汗) ありがとうございます。気づきませんでした。

その他の回答 (1)

  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★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 にすれば良いでしょう。 以上。

参考URL:
http://msdn2.microsoft.com/ja-jp/library/49z11a3f(VS.80).aspx
K-Sogacchi
質問者

お礼

ありがとうございます。 私も始めはMultiSelectプロパティぐらいあるだろうと思っていたんですが…(汗) SendMessageだと…WndProcでもOKですかね? あ、でもサブクラス化しないと面倒か… 何はともあれ、ご回答ありがとうございました。

関連するQ&A