更新 : 2007 年 11 月
既定では、今日の日付のある月が予定表に表示されます。Calendar コントロールでは、予定表のタイトル バーで月を移動するリンクをクリックすることによって、表示する月を変更できます。ユーザーがこのリンクをクリックできるようにするかどうかを制御できます。
プログラムで表示月の変更を行うこともできます。特定の月を表示するほかの方法をユーザーに提供する場合は、プログラムで日付を設定すると便利です。また、ユーザーが表示月を変更したときに発生するイベントに応答することもできます。
ユーザーによる表示月の変更を制御するには
Calendar コントロールの ShowNextPrevMonth プロパティを、true または false に設定します。このプロパティを false に設定した場合、ユーザーが表示月を移動できるようにする LinkButton コントロールはタイトル バーに表示されません。
ヒント :
NextMonthText、PrevMonthText、NextPrevFormat、および NextPrevStyle の各プロパティを設定すると、表示月の移動に使用するハイパーリンクの外観を変更できます。
プログラムの設定で表示月を移動するには
コントロールの VisibleDate プロパティに、表示する月の任意の日付を設定します。日付には、表示する月のいずれの日でも設定できますが、通常は最初の日を設定します。VisibleDate プロパティが空の場合 (DateTime.Empty に設定されている場合)、現在の表示月は TodaysDate プロパティの値から派生します。
表示月を西暦 2000 年の 2 月に変更する例を次に示します。
Calendar1.VisibleDate = New Date(2000, 2, 1)
Calendar1.VisibleDate = new DateTime(2000, 2, 1);
VisibleDate プロパティを変更しても、TodaysDate、SelectedDayStyle、または SelectedDates の各プロパティの値に影響することはありません。
表示月の変更が有効になっている場合は、ユーザーが表示月を変更すると、コントロールはイベントを発生します。このイベントを使用して、既定の表示月の変更方法を変更することもできます。たとえば、旅行計画のページに Calendar コントロールを 2 つ使用すると、ユーザーが開始日が含まれる月を、終了日が含まれる月よりも後に設定するのを防ぐことができます。
表示月変更イベントに応答するには
コントロールの VisibleMonthChanged イベントを処理するメソッドを作成します。このイベントが発生したときには、既に VisibleMonth プロパティの値が 1 だけ変更されています。
VisibleMonthChanged イベントでは、MonthChangedEventArgs 型の引数が 1 つ使用されます。この引数に設定するプロパティによって、ユーザーの処理を決定したり無効にしたりできます。設定できるプロパティを次に示します。
プロパティ
説明
表示月の移動ボタンをクリックする前に表示されていた月の値。このプロパティの値をコントロールの VisibleMonth プロパティの値と比較して、ユーザーが移動しようとしている方向を判断できます。ユーザーによるクリックを無効にする場合は、コントロールの VisibleDate プロパティにこの値を設定します。
ユーザーが表示した新しい月の値。VisibleDate プロパティは、VisibleMonthChanged イベントが発生する前に、この値に更新されます。
Public Sub Calendar1_VisibleMonthChanged(ByVal sender As Object, _ ByVal e As System.Web.UI.WebControls.MonthChangedEventArgs) _ Handles Calendar1.VisibleMonthChanged ' Select the 10th and 25th of each month. Calendar1.SelectedDates.Clear() Calendar1.SelectedDates.Add(New DateTime(e.NewDate.Year, e.NewDate.Month, 10)) Calendar1.SelectedDates.Add(New DateTime(e.NewDate.Year, e.NewDate.Month, 25)) End Sub
private void Calendar1_VisibleMonthChanged (object sender, System.Web.UI.WebControls.MonthChangedEventArgs e) { // Select the 10th and 25th of each month. Calendar1.SelectedDates.Clear(); Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 10)); Calendar1.SelectedDates.Add(new DateTime(e.NewDate.Year, e.NewDate.Month, 25)); }