如何:在 Calendar Web 服务器控件中控制月份定位

更新:2007 年 11 月

默认情况下,日历 (Calendar) 控件显示包含当前日期的月份。通过单击日历标题栏中的月导航链接,用户可以在 Calendar 控件的不同月份间移动。您可以控制这些链接是否可供用户单击。

您还可以编程方式定位,这在您想为用户提供另一种显示特定月份的方法时很有用。最后,您可响应在用户定位时引发的事件。

启用或禁用用户月份定位

以编程方式定位月份

  • 将控件的 VisibleDate 属性设置为要显示的月份中的某个日期。该日期可以是此月份中的任意一天,但通常设置为此月份中的第一天。如果 VisibleDate 属性为空(如果设置为 DateTime.Empty),则当前可见月份从 TodaysDate 属性的值获取。

    下例定位到 2000 年 2 月:

    Calendar1.VisibleDate = New Date(2000, 2, 1)
    
    Calendar1.VisibleDate = new DateTime(2000, 2, 1);
    

    更改 VisibleDate 属性对 TodaysDate、SelectedDayStyleSelectedDates 属性的值没有影响。

如果启用月份定位,则日历 (Calendar) 控件将在用户移动到另一个月份时引发一个事件。您可处理该事件以替换或修正默认的月份定位。例如,如果在一个旅行计划页上使用两个 Calendar 控件,则可以防止用户在设置起始日期月份之前设置结束日期月份。

响应月份定位事件

  • 为控件的 VisibleMonthChanged 事件创建一个方法。当该事件引发时,控件已经将 VisibleMonth 属性值增加或减少了 1。

    VisibleMonthChanged 事件采用一个 MonthChangedEventArgs 类型的参数。您可使用该参数的如下属性确定或重写用户的操作:

    属性

    说明

    PreviousDate

    在用户单击月份定位按钮之前显示的月份值。可以将该属性的值与控件的 VisibleMonth 属性值进行比较,以确定用户的定位方向。若要取消用户单击的效果,请将控件的 VisibleDate 属性设置为该值。

    NewDate

    用户已经定位到的月份值。在 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));
    }
    

请参见

概念

Calendar Web 服务器控件概述