在MonthCalendar控件中选中日期
MonthCalendar是VS.NET里面的一个月历控件,虽然现在有很多别人写的月历控件,但这个控件对付不少应用还是足够了。由于最近一直在写记帐软件,其中就得用它选日期,所以对它大致了解了一些。
在这个控件中点每个元素(日期、标题、星期、链接等等)都会触发一个点击事件,而.NET中并没有给每种点击都安排一个事件(只有一个DateSelected事件),因此需要用户自己过滤。
可以用这样编写这个事件处理函数(这个函数只处理选中日期的情况):
1
private
void monthCalendar1_DateSelected(object sender, System.Windows.Forms.DateRangeEventArgs e)
2
{
3
//将用户在MonthCalendar上点击的坐标转换程用户区坐标,并根据坐标获得点击类型
4
string s=System.Convert.ToString(monthCalendar1.HitTest(this.PointToClient
5
6
(MonthCalendar.MousePosition)).HitArea);
7
//如果用户点中了日期则设置并退出
8
if(s.Equals("Date"))
9
{
10
//以下记录选中的日期的各个值
11
_year=System.Convert.ToString(e.Start.Year);
12
_month=System.Convert.ToString(e.Start.Month);
13
_day=System.Convert.ToString(e.Start.Day);
14
_dateSelected=true;
15
//如果选中日期就自动关闭窗体
16
this.Close();
17
}
18
}
MonthCalendar.HitArea枚举类型还有很多别的值,对应月历中点的类型,这个参看MSDN。
源文档 <http://lzcarl.cnblogs.com/archive/2005/08/16/216404.aspx>