如何:响应 Calendar Web 服务器控件中的日期选择
更新:2007 年 11 月
如果 Calendar 控件的 SelectionMode 属性设置为除 None 外的任何值,则用户可选择一天或一个日期范围。您可检测并响应用户的选择。
响应日期选定
使用下面的签名,为 Calendar 控件的 SelectionChanged 事件创建一个方法:
Private Sub Calendar1_SelectionChanged(ByVal sender _ As System.Object, ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged
private void Calendar1_SelectionChanged (object sender, System.EventArgs e)
说明: 只有当控件中的用户操作更改日期选择时,才引发该事件。例如,如果用户两次单击同一个日期,则第二次单击不引发事件。如果以编程方式设置日期范围,则同样不引发该事件。
有关日期选定的信息可在下面这些属性中获得:
属性 |
说明 |
---|---|
单个日期。如果用户已选定单个日期,则该属性包含此日期。如果用户已选定多个日期,则该属性包含此日期范围中的第一个日期。 |
|
包含所有选定日期的集合。该集合中的日期是有序和唯一的。因为 Calendar 控件不允许用户选择多个单独的日期,集合中的日期也是连续的。 |
确定选定的日期数
获取 SelectedDates 集合的 Count 属性值,如下面的示例所示。
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged Text1.Text = "You selected " _ & Calendar1.SelectedDates.Count.ToString() _ & " date(s)." End Sub
private void Calendar1_SelectionChanged (object sender, System.EventArgs e) { Text1.Text = String.Format("You selected {0} date(s).", Calendar1.SelectedDates.Count); }
如果已确定用户选定了多个日期,则可获取日期范围。
获取多个日期选定的日期范围
使用 SelectedDates 属性的 Count 属性获取选定的日期的计数。
获取集合中的第一个日期,然后通过将计数的索引处的日期减一获取最后一个日期。下面的示例在页面上的文本框控件中显示第一个日期和最后一个日期。
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Calendar1.SelectionChanged With Calendar1.SelectedDates If .Count > 1 Then Dim firstDate As Date = .Item(0).Date Dim lastDate As Date = .Item(.Count - 1).Date TextBox1.Text = firstDate.ToString() TextBox2.Text = lastDate.ToString() End If End With End Sub
private void Calendar1_SelectionChanged (object sender, System.EventArgs e) { SelectedDatesCollection theDates = Calendar1.SelectedDates; if (theDates.Count > 1) { DateTime firstDate = theDates[0]; DateTime lastDate = theDates[theDates.Count-1]; TextBox1.Text = firstDate.ToString(); TextBox2.Text = lastDate.ToString(); } }
获取多个日期选定的时间跨度
创建一个 TimeSpan 对象,并将其设置为 SelectedDates 集合中最后一个日期与第一个日期之间的差,然后获取 TimeSpan 对象的 Days 属性。
Public Sub Calendar1_SelectionChanged(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged With Calendar1.SelectedDates Dim days As Integer Dim firstDate As Date = .Item(0).Date Dim lastDate As Date = .Item(.Count - 1).Date ' The Subtract method returns a TimeSpan object. days = lastDate.Subtract(firstDate).Days + 1 TextBox1.Text = "You have selected " & days.ToString() & " day(s)." End With End Sub
private void Calendar1_SelectionChanged (object sender, System.EventArgs e) { SelectedDatesCollection theDates = Calendar1.SelectedDates; TimeSpan timeSpan = theDates[theDates.Count-1] - theDates[0]; TextBox1.Text = String.Format("You have selected {0} day(s).", timeSpan.Days + 1); }
请参见
任务
如何:在 Calendar Web 服务器控件中以编程方式选择日期