MonthCalendarの前月/次月ボタンを非表示にする方法と選択を解除、または選択した時の色を変更するには?

解決


ガリット  2009-06-19 09:50:44  No: 142088  IP: 192.*.*.*

こんにちは、
ただ今、VB.NET・Visual Studio2005・XP SP3で、
MonthCalendarコントロールを使用したWindowsアプリケーションを作成しております。
そこで、質問なのですが、MonthCalendarコントロールのタイトルの横に付いている前月/次月ボタンを非表示する方法を、
どなたかご存知ならば、ご教授ください。
それに合わせて、MonthCalendarコントロールの表示する月を、

MonthCalendar1.SetDate(New Date(2009, 1, 1))

という記述で設定しているのですが、これでFormを表示させた時に、
2009年1月1日は表示されるのですが、2009年1月1日が選択された状態で、色か変わって表示されてしまいます。
よって、選択された色をバックカラーと同じにしようとしたのですが、これは設定しますと、
タイトル部分も変わってしまって、考えていることと外れてしますのです。
だから、選択を解除する方法か、選択された日付のみ色変更する方法をどなたかご存知でしたら、
ご教授下さい。
よろしくお願いします。

編集 削除
魔界の仮面弁士  2009-06-19 10:41:25  No: 142089  IP: 192.*.*.*

> 前月/次月ボタンを非表示する方法
たとえば
  MonthCalendar1.MinDate = #6/1/2009#
  MonthCalendar1.MaxDate = #6/30/2009#
などとすれば、それらのボタンを使えなくすることはできますが、
非表示にするのは厳しいでしょう。

あれらのボタンは、実際には単に「描画」されているだけなので、
外部から API で制御できるような物でも無いですし。


> 選択を解除する方法か
日付が選択されていない状態にしたい、という事でしょうか?
それはできないと思います。DateTimePicker であれば、
  DateTimePicker1.ShowCheckBox = True
  DateTimePicker1.Checked = False
のようにして未選択を表現できますが…。


残念ながら、カレンダーを自作するか、同等機能のコントロールを探してきた方が良いと思います。


> 考えていることと外れてしますのです。
MonthCalendar は基本的に、プロパティ/メソッド/イベントで
用意された事以上のカスタマイズには向いていません。

OS 自身が持つ MonthCalendar コントロールの仕様に引きずられているため、
ここで無理に対処したとしても、Vista/Windows 7 に切り替えたり、
XP の更新プログラムなどによって、細かい部分が変化する可能性もありえます。


http://connect.microsoft.com/VisualStudio/ 
http://connect.microsoft.com/VisualStudioJapan/ 
MonthCalendar に関するフィードバックを探すと、数々の制限が浮き彫りに…。

編集 削除
ガリット  2009-06-19 10:59:34  No: 142090  IP: 192.*.*.*

魔界の仮面弁士様

素早い対応、誠にありがとうございます。
前に同じ環境で、VB・ASP.NETでCalendarコントロールを使用した際には、
前月/次月ボタンの非表示等の制御が、簡単にできたので、こちらの方でもできるかなと思い、
色々思考してみたのですが…。同じカレンダーでも、こちらの方が不便ですね。

>日付が選択されていない状態にしたい
というのは、MonthCalendarのTitleBackColorと初期表示された時、
選択されている日付の箇所が同じ色で表示されてしまうので、それを避けたかったためです。
日付が選択されていない状態なら、初期表示の時、MonthCalendarの日付の箇所が、
全て同じ色で表示されると思い、ご質問させて頂きました。

編集 削除