如何在c#.net windows应用程序中生成日历

时间:2011-07-07 10:17:44

标签: c# calendar windows-applications

我想在c#.net中生成日历以输入每日出勤率。我在网络中使用jquery日历用于类似目的。有没有办法创建日历控件并获取点击事件来标记和显示其中的值。

谢谢

示例图片:

enter image description here

2 个答案:

答案 0 :(得分:2)

如果您有预算,我肯定会选择像Telerik's Scheduler Control这样的商业广告。这个系列的售价为999美元,之前我从未使用过Telerik的控件,因此我不能自己推荐它们,但从外观来看,如果你可以在其他项目中重复使用这些组件,那么从长远来看它是值得的。

如果这不是一个选项,那么像你的例子一样简单的东西就很容易卷起来。我主要在WinForms中工作,所以这就是构建表单的方式:

  1. 创建自定义控件以显示任何指定日期。您将需要在月份顶角的标签和标签显示当天的文本(进/出时间)。也许添加边框。
  2. 创建包含日历的表单或控件
  3. 使用月份和年份控件添加停靠在顶部的工具条。使用组合框或下拉按钮。
  4. 添加一个停靠在顶部的精简面板,并添加日期标签。确定您希望每列的宽度,并根据该位置定位标签。
  5. 添加FlowLayoutPanel并将Dock设置为Fill。这将包含'day'控件,它将从左到右,从上到下流动。
  6. 现在你需要在代码中工作,而不是设计师。这可能是在构造函数,Page_Load处理程序中完成的,或者在设置(或初始化)月份/年时调用的地方:

    1. FlowLayoutControl添加足够的空白面板以填充月初。您可以通过new DateTime(year, month, 1).DayOfWeek找出要添加的数量,以查找当月第一天的日期。空面板应设置为与'day'控件相同的大小。
    2. 在该月的每一天为day添加FlowLayoutControl控件。使用DateTime.DayInMonth(year, month)查找所选月份的天数,并在添加时将每个“日期”控件设置为日期(可能还有输入/输出数据)。
    3. 现在在'day'控件和填充面板上使用填充和边框,直到所有内容都正确。您可以在设计器中添加一些测试'日'控件和面板,以测试那里的布局,只需在设置代码中调用flowLayoutControl.Items.Clear()
    4. 这应该会产生一个可以动态显示任何月份的控件。要添加考勤编辑功能,请在“日期”控件或日历控件本身(当您将“日期”控件添加到Click时)设置FlowLayoutControl处理程序,然后打开一个模态表单来编辑或添加所选日期的输入/输出时间。

      如果您希望动态调整日期控件动态注册包含控件的Resize事件,并将每天控件的宽度和高度设置为Math.Floor(control.Width / 7)(七天宽)和Math.Floor(control.Height / 5) (五周高)或类似的东西。

答案 1 :(得分:0)

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