form超强日历控件

 

1 介绍
就如您看到了截图一样,这是一个可以记录您的约会和特殊事件的日历控件。它有很多特性使得你可以控制将要发生的事件,像闹铃等。这里为您提供了100%的代码,使得您可以方便的引用到您的工程使它开始工作。
2 背景
我发现了一些类似的控件,但是它并不能满足我的需求,所以自己实现了需要的功能。你可以很好的使用它,但是更多的您可以在它的基础上进行扩展。
3 利用代码
如果需要添加一个Calendar,您只需将Calendar控件拖拽到您的form上就可以了,它位于System.Windows.Forms.Calendar空间下。
4 什么时候使用它
它可以用来记录任何日期的事件,当然并不只是约会和会议,想象一下会有多么丑陋的控件会出现在你的系统里。
5 控制试图
这个日历的试图是通过ViewStart和ViewEnd这两个属性提供的区间来提供的。这个日历会描绘这两天之间所有的日期。
这款日历控件可以通过两种模式来显示日期:Expanded和Short(参见Calendar.DayMode).Expanded是类似第一个截图似的模式。每一天以列的形式显示出来,所有的项目都放在当天下的时间内。对于Short模式(第二个截图)这个是周别的视图,所有的项目以更紧凑的形式展示出来。
另外一个比较重要的属性是MaximunFullDays(默认8),这个属性意味着当你选择的日期视图为8天甚至更少时这个日历空间以Expanded模式显示,如果大于8天的话则以Short模式显示。
6 填充日历项目
你可以通过LoadItems事件为这个日历添加项目。在这个事件中,你可以加入一些信息来标记你加入的项目。这些事件可以在规定时间里引起试图的变化。这里我强烈建议您通过缓存而不是数据库来触发这些事件因为这样用户的界面交互将受到严重影响。
这个demo的事件使用的一个数组,所以不是一个很好的例子。

我强烈建议您在日历上添加一个交错的日期事件。你可以通过DateIntersects的实现去检查它们。


7 事件
当你想要利用我列出来的事件智能感知来开发,那么下边的事件将有助于你控制你的应用程序。
DayHeaderClick: 当一天的日期头被单击时触发
ItemClick: 当一个项目被单击时触发.
ItemCreated: 当一个项目被成功创建时触发.
ItemCreating: 当用户想要创建一个项目,但是被取消的时候触发.
ItemDatesChanged: 当一个项目的时间区间改变时触发.
ItemDeleted: 当一个项目被成功删除时触发.
ItemDeleting: 当用户想要删除一个项目但是被取消时触发.
ItemDoubleClick: 当一个项目被双击时触发.
ItemMouseHover: 当一个鼠标滑过一个项目时触发。.
ItemSelected: 当一个项目被选中时触发.
ItemTextEdited: 当一个项目被编辑时触发
ItemTextEditing: 当用户试图编辑一个项目但是被取消的时候触发.
LoadItems: 当日历被改变时触发.

8 一些比较好的特性
a 项目重叠
当一些项目在日期上互相交互时,这里有一个很好的算法将布局去适应它们,可以尝试一下。
b 项目颜色
当日历控件渲染这些项目时,你可以对项目选择单独的背景和边框。
甚至,你可以通过对一个项目使用ApplyColor方法(CalendarItem),通过代码你可以对一个项目的背景,边框字体设置阴影等。在这个demo中是通过日历控件的上下文去适应项目颜色的。

9 时间刻度
对于Outlook的日历的话刻度时30分钟,但是这里你试可以通过选项选择时间刻度。下图是间隔为15分钟的日历。


在这个demo中,你可以利用日历上下文的选项去选择不同的时间刻度。

10 月别视图控件
对于月别的视图,不要绝对的讨厌它出现在您的系统UI上。这里就有一个解决方案,这个工程中有一个Control叫做MonthView,乍一看类似于Outlook的日历,完全的用户话,同时它并不强制控件的大小。这个控件的可用大小依靠于容器的大小。
对于这个控件一些有趣的属性:
FirstDayOfWeek:可以改变每一周从哪一天开始
ItemPadding:设置项目和边框的大小,这样你可以做一个比较紧凑的布局
SelectionModel:手动,日期,周,工作日和月
WorkWeekStart:标记工作日从哪天开始
WorkWeekEnd:标记工作日哪天结束


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值