事件

Calendar的事件有:

e参数属性:

Sender:返回触发事件的控件
Form:   返回控件所在的窗口 

两个事件很相似,DateChanged在选定日期发生变化后执行,不管是单击上一月、下一月按钮,还是单击某个日期,都会触发,而DateSelected只有在用鼠标单击某个日期后才会触发。

示例一

例如希望单击某个日期,能够从订单表自动筛选出此日期的订单,可以将DateSelected事件设置为:

Tables("订单").Filter = "日期 = #" & e.Sender.Value & "#"

示例二

这次希望能够筛选选择的一个或多个日期的订单,如果单击某个日期,直接筛选此日期的订单,如果按住Ctrl键单击多个日期,则筛选多个日期的订单。
为实现此目的,可以如下设置DateSelected事件的代码,这也是一个很好的使用静态变量的例子:

Static lst As List(of Date) '定义一个静态集合变量,用于存储选择的日期
If
lst Is Nothing Then
    lst = New List(of
Date)
End
If
If
ModifierKey <> Keys.Control Then '如果没有按下Ctrl键
    lst.Clear()
'清除以前的日期
End
If
If
lst.Contains(e.Sender.Value) = False Then '如果集合不包括按下的日期
    lst.Add(e.Sender.Value)
'则向集合添加此日期
End
If
If
lst.Count = 1 Then '如果只选择了一个日期,则直接筛选此日期的订单
   
Tables("订单").Filter = "日期 = #" & e.Sender.Value & "#"
Else
'否则用In运算符筛选选定的多个日期的订单
   
Dim v As String
   
For i As Integer = 0 To lst.Count - 1
        v = v &
"#" & lst(i) & "#,"
   
Next
    v = v.Trim(
",")
    Tables("订单").Filter = "日期 In (" & v & ")"
End If


本页地址:http://www.foxtable.com/webhelp/topics/2120.htm