转载的calendar文章

来源:互联网 发布:mac系统ntfs插件 编辑:程序博客网 时间:2024/05/22 05:15
Calendar控件 属性 事件详解
2009-07-19 17:37

Calendar控件

Calendar控件功能:
显示一个日历,该日历会显示一个月份
允许用户选择日期、周、月
允许用户选择一定范围内的日期
允许用户移到下一月或上一月
以编程方式控件选定日期的显示

Calendar最重要的属性
名称 说明
Caption 显示在日历上方的文本
CaptionAlign 指定标题的垂直和水平对齐方式
CellPadding 边框和单元格之间的以像素为单位的间距。默认为2
CellSpacing 单元格间以像素为单位的间距。默认值为0
DayNameFormat 一周中每一天的格式。默认为Short
FirstDayOfWeek 在第一列显示的一周的某一天,默认值由系统设置指定
NextMonthText 下一月份的导航按钮的文本。默认为大于号(>)
NextPrevFormat 在NextMont-hText和PrevMonth-Text中指定使用的文本
PrevMonthText 上一月份的导航按钮的文本。默认为小于号(<)。
SelectedDate 一个选定的日期。只保留日期,时间为空
SelectedDates 选择多个日期后的DateTime对象的集合。只保存日期,时间为空
SelectedDates.Count 选择了选择了日期的数量
SelectionMode 在本节的后面描述
SelectMonthText 选择器列中月份选择元素显示的文本。默认为两个大于号(>>)。
ShowDayHeader 是否在日历标题中显示一周中每一天的名称。默认为true
ShowGridLines 如果为true,显示单元格之间的网格线。默认为false
ShowNextPrevMonth 指定是否显示上个月和下个月导航元素。默认为true
ShowTitle 指定是否显示标题(上个月和下个月导航元素)。
TitleFormat 指定标题是显示为月份,还是同时显示月份和年份.默认为MonthYear
TodaysDate 今天的日期
UseAccessibleHeader 指示是否使用可通过辅助技术访问的标题
VisibleDate 显示月份的任意日期

在Calendar中选择日期

如果需要让用户可以选择一天、一周或一个月,则必须设置SelectionMode属性。

CalendarSelectionMode枚举成员
Day 允许用户选择单个日期。这是默认值
DayWeek 允许用户选择单个日期或整周
DayWeekMonth 允许用户选择单个日期、周或整个月
None 未能选择日期

控制Calendar的外观

许多TableItemStyle类型的属性用于控制日历每个部分的样式。

Calendar中TableItemStyle类型的属性
名称   所设置样式的对象
DayHeaderStyle 一周中某天
DayStyle 日期
NextPrevStyle 月份导航控件
OtherMonthDayStyle 不在当前显示月份中的日期
SelectedDayStyle 选中日期
SelectorStyle 周和月选择器列
TitleStyle 标题栏
TodayDayStyle 今天的日期
WeekendDayStyle 周末日期

Boolean 类型的属性控制日历外观的不同部分
属性   默认值 控制其可见性的对象
ShowDayHeader true 一周中每一天的名称
ShowGridLines false 月份中日期的网格线
ShowNextPrevMonth true 月份导航控件
ShowTitle true 标题栏

Calendar控件编程

Calendar控件提供了3个事件:
SelectionChanged
DayRender
VisibleMonthChanged


SelectionChanged 事件 当用户控件选择一天、一周或整月时发生

以编程方式选择时,并不触发该事件。该事件处理程序传递一个EventArgs类型参数。
例如:
protected void Calendar1_SelectionChanged(object sender, EventArgs e)
{
    lblTodaysDate.Text = "Today's Date is " + Calendar1.TodaysDate.ToShortDateString();
    if (Calendar1.SelectedDate != DateTime.MinValue)
        lblSelected.Text = "The date selected is " + Calendar1.SelectedDate.ToShortDateString();
    lblCount.Text = "Count of Days Selected: " + Calendar1.SelectedDates.Count.ToString();
}

TodaysDate 属性 获取或设置今天的日期的值(System.DateTime类型)
DateTime转换到字符串的方法
方法名称 说明
ToFileTime 转换到本地文件系统的格式
ToLongDateString 转换到长日期字符串
ToLongTimeString 转换到长时间字符串
ToShortTimeString 转换到短时间字符串
ToString 转换到一个字符串

DateTime的只读属性
属性名称 说明
Date 返回日期部分
Day 返回月份中的日期
DayOfWeek 返回一周中的日期,如Friday,Saturday等
DayOfYear 返回年份中的日期
Hour 返回小时部分
Millisecond 返回毫秒部分
Minute 返回分钟部分
Month 返回月部分
Second 返回秒部分
Ticks 返回表示日期和时间的以100毫微秒为间隔的间隔数
TimeOfDay 返回当天的时间
Year 返回年部分

DateTime的字段
MaxValue 表示 DateTime 的最大可能值。此字段为只读。
MinValue 表示 DateTime 的最小可能值。此字段为只读。

如果没有选择一个日期SelectedDate属性,则默认为DateTime.MinValue
检测当前选择日期Calendar1.SelectedDate是否等于DateTime.MinValue来检查是否选择了一个日期
MaxValue字段的值为11:59:59 PM,12/31/9999 CE。


SelectedDates集合中的日期是按日期升序排列的。
SelectedDate属性自动更新为包含SelectedDates集合的第一个对象。

尽管SelectedDates(选定日期的集合)和SelectedDate(单个选定的日期)都包含DateTime对象,但只存储Date值,时间值被设置null(在C#语言中)。

使用Calendar控件的VisibleDate属性可以设置显示的月份
VisibleDate属性是DateTime类型需要3个整型参数:year、month和day。
例如:
Calendar1.VisibleDate = new DateTime(Calendar1.VisibleDate.Year,
                  Int32.Parse(ddl.SelectedItem.Value), 1);

Int32.Parse(ddl.SelectedItem.Value)能把这个Value值转换为整型

DateTime对象的DaysInMonth属性获取该月份中的天数
例如:
System.DateTime.DaysInMonth(currentYear, currentMonth)

判断当前日期是星期几,可用DayOfWeek对象
例如:
DateTime date = new DateTime(currentYear, currentMonth, i);
if (date.DayOfWeek == DayOfWeek.Friday)
   //date是星期五

使用 SelectedDates 集合以编程方式选择 Calendar 控件上的日期。
使用 Add、Remove、Clear 和 SelectRange 方法在 SelectedDates 集合中的选定日期。
例如:
Calendar1.SelectedDates.Add(date);

SelectRange 方法 将指定的日期范围添加到 SelectedDatesCollection 集合中
需要两个参数:开始日期和结束日期。
例如:
Calendar1.SelectedDates.SelectRange(StartDate, EndDate);


DayRender 事件 当为 Calendar 控件在控件层次结构中创建每一天时发生

DayRender事件处理程序接收两个DayRenderEventArgs类型的参数。
该对象有两个属性,它们可以用编程方式读取:
Cell 表示要呈现的单元格的表格单元格对象。
Day 表示呈现在单元格中日期的CalendarDay对象。

例如:
添加事件:
OnDayRender="Calendar1_DayRender"

事件处理程序:
protected void Calendar1_DayRender(object sender, DayRenderEventArgs e)
{
   // 注意这将会覆盖WeekendDayStyle
   if (!e.Day.IsOtherMonth && e.Day.IsWeekend)
      e.Cell.BackColor = System.Drawing.Color.LightGreen;
   // 在单元格中显示“Happy New Year!”
   if (e.Day.Date.Month == 1 && e.Day.Date.Day == 1)
      e.Cell.Controls.Add(new LiteralControl("<br/>Happy New Year!"));
}

参数:
DayRenderEventArgs包含Day和Cell的属性。

Day是一个CalendarDay类型属性。
CalendarDay类的属性
属性 说明
Date 由Day表示的日期。只读
DayNumberText 该日期的日编号的等效字符串。只读
IsOtherMonth 指示该日期是否显示当前月份以外的月份。只读
IsSelectable 指示该日期是否可以被选择。非只读
IsSelected 指示该日期是否被选择
IsToday 指示该日期是否是今天
IsWeekend 指示该日期是否是周末

VisibleMonthChanged 事件 当用户单击标题标头上的下个月或上个月导航控件时发生

例如:
添加事件:
OnVisibleMonthChanged="Calendar1_VisibleMonthChanged"

事件处理程序:
protected void Calendar1_VisibleMonthChanged(object sender, MonthChangedEventArgs e)
{
   if ((e.NewDate.Year > e.PreviousDate.Year) ||
      ((e.NewDate.Year == e.PreviousDate.Year) &&
      (e.NewDate.Month > e.PreviousDate.Month)))
      lblMonthChanged.Text = "My future's so bright...";
   else
      lblMonthChanged.Text = "Back to the future!";
   Calendar1.SelectedDates.Clear( );
   lblSelectedUpdate( );
   lblCountUpdate( );
   txtClear( );
}

参数:
MonthChangedEventArgs类型的参数属性:
NewDate 表示Calendar当前显示的月份。
PreviousDate 表示Calendar以前显示的月份。