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

MonthCalendar について

環境/言語:[Windows98XP]
分類:[.NET]

MonthCalendarについて教えてほしいのですが
カレンダーの日付に指定日だけ色を変えたいのですが
何か方法はありませんでしょうか?
日付単位でデータを作成しておりデータのある日のみカレンダーの
色を変えたいのです。
> カレンダーの日付に指定日だけ色を変えたいのですが
> 日付単位でデータを作成しておりデータのある日のみカレンダーの
> 色を変えたいのです。

.NET FramerorkのMonthCalendarはCommonコントロールのラッパーですが、
その元のコントロールでも特定の色を指定することはサポートされていないと
思います。ただ、色ではなく特定の日付をBoldにすることはできます。
(BoldedDatesなど)

方法としてはオーナードローをすることになると思います。または
自分で一から作ってしまうのも手かもしれません。
次のようなコントロールも公開されているので、参考になると思います。
http://www.c-sharpcorner.com//Code/2003/June/VerticalCalendarControl.asp
■No6258に返信(antさんの記事)
>>カレンダーの日付に指定日だけ色を変えたいのですが
>>日付単位でデータを作成しておりデータのある日のみカレンダーの
>>色を変えたいのです。
>
> .NET FramerorkのMonthCalendarはCommonコントロールのラッパーですが、
> その元のコントロールでも特定の色を指定することはサポートされていないと
> 思います。ただ、色ではなく特定の日付をBoldにすることはできます。
> (BoldedDatesなど)
>
> 方法としてはオーナードローをすることになると思います。または
> 自分で一から作ってしまうのも手かもしれません。
> 次のようなコントロールも公開されているので、参考になると思います。
> http://www.c-sharpcorner.com//Code/2003/June/VerticalCalendarControl.asp

antさん ありがとうございます

BoldedDates でやってみたいのですが、設定の方法が分かりません
記述例をおしえていただけませんか?
> BoldedDates でやってみたいのですが、設定の方法が分かりません
> 記述例をおしえていただけませんか?

こちらに良い例があるので、参考にされるといいでしょう。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmonthcalendarclassboldeddatestopic.asp
■No6266に返信(antさんの記事)
>>BoldedDates でやってみたいのですが、設定の方法が分かりません
>>記述例をおしえていただけませんか?
>
> こちらに良い例があるので、参考にされるといいでしょう。
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmonthcalendarclassboldeddatestopic.asp


antさん さん ありがとうございます
サンプルを参考にして下記のように特定の日付けを太文字にするとこまでは
できたのですがDateTime(2004, 1, 7, 0, 0, 0, 0)}の中の設定方法が分かりません。
Me.MonthCalendar1.MonthlyBoldedDates = New System.DateTime() _
{New System.DateTime(2004, 1, 7, 0, 0, 0, 0)}

従ってずべての月にまたがり指定日が太文字になってしまいます。
また 複数日の指定方法も分かりません。
もう少しご教示いただければ、ありがたいのですが。
■No6288に返信(ふろふろさんの記事)

> antさん さん ありがとうございます
> サンプルを参考にして下記のように特定の日付けを太文字にするとこまでは
> できたのですがDateTime(2004, 1, 7, 0, 0, 0, 0)}の中の設定方法が分かりません。
> Me.MonthCalendar1.MonthlyBoldedDates = New System.DateTime() _
> {New System.DateTime(2004, 1, 7, 0, 0, 0, 0)}
>
> 従ってずべての月にまたがり指定日が太文字になってしまいます。
> また 複数日の指定方法も分かりません。
> もう少しご教示いただければ、ありがたいのですが。


オーソドックスな方法ですがこれでどうでしょうか?

Dim bld() As DateTime = New DateTime() {New DateTime(2004, 9, 10), New DateTime(2004, 8, 25)}
Me.MonthCalendar1.BoldedDates = bld

うまくいかなければすみません。


>
>>サンプルを参考にして下記のように特定の日付けを太文字にするとこまでは
>>できたのですがDateTime(2004, 1, 7, 0, 0, 0, 0)}の中の設定方法が分かりません。
>>Me.MonthCalendar1.MonthlyBoldedDates = New System.DateTime() _
>> {New System.DateTime(2004, 1, 7, 0, 0, 0, 0)}
>>従ってずべての月にまたがり指定日が太文字になってしまいます。
>>また 複数日の指定方法も分かりません。
>>もう少しご教示いただければ、ありがたいのですが。


具体的なコードは平ちゃんさんがお答えになりましたので、
自分は情報検索のコツのようなことを書いておきます。(^^

今回の事例を例にとってみると、まず、MSDNライブラリでMonthCalendarを検索
します。すると、

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmonthcalendarclasstopic.asp

のようなクラスを見つけることができると思うので、次にそのメンバを
表示して、BoldedDatesというプロパティを発見します。
このBoldedDatesの宣言文を見てみると、次のように書かれています。

[Visual Basic]
Public Property BoldedDates As DateTime ()

この宣言文からBoldedDatesがDateTime型の配列を取得(設定)することがわかり
ます。従って、次はDateTime型の作り方(コンストラクタの使い方)を調べます。
リンクをたどってDateTime型のコンストラクタのページを見てみます。

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatetimeclassctortopic.asp

ここに、いくつかのコンストラクタの使い方が載っているので、自分の要件に
あったものを見つけて使用するといった感じです。

MSDNライブラリは情報量は多いですが、その分強力です。頑張ってみてください。
■No6293に返信(antさんの記事)
> >>サンプルを参考にして下記のように特定の日付けを太文字にするとこまでは
> >>できたのですがDateTime(2004, 1, 7, 0, 0, 0, 0)}の中の設定方法が分かりません。
> >>Me.MonthCalendar1.MonthlyBoldedDates = New System.DateTime() _
> >> {New System.DateTime(2004, 1, 7, 0, 0, 0, 0)}
> >>従ってずべての月にまたがり指定日が太文字になってしまいます。
> >>また 複数日の指定方法も分かりません。
> >>もう少しご教示いただければ、ありがたいのですが。
>
>
> 具体的なコードは平ちゃんさんがお答えになりましたので、
> 自分は情報検索のコツのようなことを書いておきます。(^^
>
> 今回の事例を例にとってみると、まず、MSDNライブラリでMonthCalendarを検索
> します。すると、
>
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemwindowsformsmonthcalendarclasstopic.asp
>
> のようなクラスを見つけることができると思うので、次にそのメンバを
> 表示して、BoldedDatesというプロパティを発見します。
> このBoldedDatesの宣言文を見てみると、次のように書かれています。
>
> [Visual Basic]
> Public Property BoldedDates As DateTime ()
>
> この宣言文からBoldedDatesがDateTime型の配列を取得(設定)することがわかり
> ます。従って、次はDateTime型の作り方(コンストラクタの使い方)を調べます。
> リンクをたどってDateTime型のコンストラクタのページを見てみます。
>
> http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatetimeclassctortopic.asp
>
> ここに、いくつかのコンストラクタの使い方が載っているので、自分の要件に
> あったものを見つけて使用するといった感じです。
>
> MSDNライブラリは情報量は多いですが、その分強力です。頑張ってみてください。

平ちゃん ありがとうございました ういまくいきました!!

さてここから For 〜 Next ループで回して日付データに変数として
与えて、複数の日付を太文字で表示できるかTESTしてみます。

ありがとうございました。

antさん ご指導ありがとうございました、おっしゃる通りMSDNライブラリ
の使い方を未だよく分かっていません。
情報の宝庫であることは分かっているのですが、なかなか理解できず
今回の例を参考にどうやれば、平さんの回答にたどりつけるのか
再度よく検証してみたいと思います。
本当にありがとうございました、ひとまず解決とさせていただきます。
今後ともよろしくお願いします。
解決済み!

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