2011-07-07 68 views
1

我想在c#.net中生成日历以进入日常出勤情况。我在web中使用了jquery日历用于类似目的。有什么办法可以创建日历控件并获取点击事件来标记和显示值。如何在c#.net窗口应用程序中生成日历

感谢

示例图片:

enter image description here

+0

您是否在寻找开源/免费解决方案,或者您能否考虑购买像DevExpress XtraEditors和XtraScheduler或Telerik组件的组件库? –

回答

2

如果你有预算我肯定会去像Telerik's Scheduler Control商业组件。这将花费999美元的收藏,我以前从未使用过Telerik的控件,所以我不能自己推荐它们,但从长远来看,如果您可以在其他项目中重新使用组件,它可能是值得的。

如果这是不是一种选择,一些作为你的例子是相当容易翻车自己一样简单。我主要在WinForms中工作,所以这就是我如何构建表单的方法:

  1. 创建自定义控件以显示任何给定日期。您需要在月份的顶部角落有一个标签,并且需要一个标签来显示当天的文本(输入/输出时间)。也许添加一个边框。
  2. 创建一个将包含日历的窗体或控件
  3. 使用月份和年份控件添加停靠在顶部的工具条。使用组合框或下拉按钮。
  4. 添加一个停靠在顶部的薄板,并为这些天添加标签。决定每列的宽度,并根据该宽度定位标签。
  5. 添加FlowLayoutPanel并设置DockFill。这将包含'天'控制,这将从左到右,从上到下流动。

现在,您需要在代码中工作,而不是设计师。这或许可以在构造函数中完成,Page_Load处理程序,或介于月份时/年设置(或初始化)被调用:

  1. FlowLayoutControl垫添加足够的空面板缺货的开始月。您可以通过new DateTime(year, month, 1).DayOfWeek找出要添加多少个月才能找到月份的第一个月。空面板应设置为与“日”控件相同的尺寸。
  2. 添加day控制到FlowLayoutControl每天的一个月。使用DateTime.DayInMonth(year, month)来查找所选月份的天数,并在添加日期时设置每个'日期'控件的日期(可能还有输入/输出数据)。
  3. 现在玩填充和边界的'日'控件和填充面板,直到一切看起来不错。您可以在设计器中添加一些测试'日'控件和面板以测试布局,只需在设置代码中调用flowLayoutControl.Items.Clear()即可。

这应该导致在可以动态显示任意一个月的控制。要添加考勤编辑功能,请在'day'控件或日历控件本身中设置Click处理程序(当您将'day'控件添加到FlowLayoutControl时,并打开模式窗体以编辑或添加内/外次选定日期。

如果你想白天控制动态调整注册了包含控制的Resize事件,并每天控制的宽度和高度Math.Floor(control.Width/7)(7天宽)和Math.Floor(control.Height/5)(五周高)或类似的东西

+0

我是新来的c#,我需要实现日历中显示的日历。如需要添加信息点击date.Can你建议我任何教程或代码做你说的事情 – Heena

+1

@Heena this(http:// www.codeproject.com/KB/docview/WinFormsCalendarView.aspx)看起来很有趣 –

0

据我所知,没有在市场上标准的进度控制。我建议你看一下DevExpress的XtraSchedule控件。

相关问题