事件
Calendar的事件有:
- DateChanged
选定日期发生变化后执行
- DateSelected
用鼠标选定某个日期后执行
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