calendar web 控件所支持的事件分别为ondayrender、onvisiblemonthchanged 以及onselectionchanged 这三个事件,接下来我们来了解如何使用。
onselectionchanged 事件
onselectionchanged 事件当使用者点选月历控件上的不同日期,或选了整月或整周时触发。其宣告语法为:
sub onselectionchanged(sender as object, e as eventares)
...
end sub
下列范例显示使用者所点选的日期:
<html>
<form runat="server">
<asp:calendar id="cala" runat="server"
selectionmode="dayweekmonth" showgridlines="true"
shownextprevmonth="true" nextmonthtext="[next]"
selecteddaystyle-backcolor="#dbdbdb"
onselectionchanged="cala_sc"/>
</form>
<asp:label id="label1" runat="server"/>
<script language="vb" runat="server">
sub cala_sc(sender as object, e as eventargs)
label1.text="您所点选的日期为: " & cala.selecteddate
end sub
</script>
</html>

上述范例当使用者选取整周或整个月时,只能显示所选取的第一天;若要显示被选取的范围,利用selecteddates 集合来取得使用者点选的范围。下列范例可以显示使用者选取的整周或整月:
<html>
<form runat="server">
<asp:calendar id="cala" runat="server"
selectionmode="dayweekmonth" showgridlines="true"
shownextprevmonth="true" nextmonthtext="[next]"
selecteddaystyle-backcolor="#dbdbdb"
onselectionchanged="cala_sc"/>
</form>
<asp:label id="label1" runat="server"/>
<script language="vb" runat="server">
sub cala_sc(sender as object, e as eventargs)
label1.text="您所点选的日期为: " & cala.selecteddate
if cala.selecteddates.count > 1 then
label1.text + = " 至" &
cala.selecteddates.item(cala.selecteddates.count-1)
end if
end sub
</script>
</html>

由于selecteddates 是集合对象,我们当然可以加入一些特定的日期到集合中,只要利用selecteddates.add 方法即可。另外selecteddates 集合中有selectrange 属性可以用来指定某个范围的日期。下列范例让使用者输入指定范围的日期,然后利用calendar web 控件显示:
<html>
<form runat="server">
请输入日期范围(格式yyyy/mm/dd):<br>
从: <asp:textbox id="text1" runat="server"/>
至: <asp:textbox id="text2" runat="server"/>
<asp:button id="btnok" text="确定" onclick="btnok_click"
runat="server"/><br>
<asp:calendar id="cala" runat="server"
selectionmode="dayweekmonth" showgridlines="true"
shownextprevmonth="true" nextmonthtext="[next]"
selecteddaystyle-backcolor="#dbdbdb"/>
</form>
<script language="vb" runat="server">
sub btnok_click(sender as object, e as eventargs)
cala.selecteddates.selectrange(text1.text, text2.text)
end sub
</script>
</html>

onvisiblemonthchanged 事件
onvisiblemonthchanged 事件当使用者点选月历控件标题列上的上个月或下个月按钮时触发。其宣告语法为:
sub onvisiblemonthchanged(sender as object, e as monthchangedeventargs)
...
end sub>
其中参数e 有两个属性,如下表所示:

ondayrender 事件
ondayrender 事件当月历控件在产生每一天的表格时触发。其宣告语法为:
sub ondayrender(sender as object, e as dayrendereventargs)
...
end sub
其中参数e 有14 个属性,如下表所示:


下列范例单纯的显示月历,并将本月的双数日期反像显示:
<%@import namespace="system.drawing"%>
<html>
<form runat="server">
<asp:calendar id="cala" runat="server"
selectionmode="none" showgridlines="true"
bordercolor="gray" titlestyle-backcolor="white"
ondayrender="cala_dayrender"/>
</form>
<script language="vb" runat="server">
sub cala_dayrender(sender as object, e as dayrendereventargs)
if e.day.daynumbertext.toint16 mod 2 = 0 and not e.day.isothermonth
then
e.cell.backcolor=color.gray '以颜色名称设定颜色
e.cell.forecolor=color.fromargb(255,255,255,255) '设定颜色
end if
end sub
</script>
</html>

要在程序中指定对象的颜色,要使用color 对象;要使用color 对象之前要先宣告color 对象的名称位置,其名称地址为system.drawing。color 对象支持多种设定颜色的方式,其中最简单的方式是直接利用「color. 颜色名称」的方式来宣告;或是以fromargb 方法指定颜色的alpha、r、g、b 值也可以。