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

如何在c#.net windows应用程序中生成日历,c#,calendar,windows-applications,C#,Calendar,Windows Applications,我想在c#.net中生成日历以输入每日出勤率。我在web中使用了jquery日历用于类似目的。是否有任何方法可以创建日历控件并获取click事件来标记和显示该控件中的值 谢谢 示例图像: 据我所知,市场上没有标准的进度控制。我建议您查看一下DevExpress的控件。如果您有预算,我肯定会购买像这样的商业组件。这将花费999美元的收集,我从来没有使用过Telerik的控制之前,所以我不能推荐他们自己,但从长远来看,它可能是值得的,如果你可以在其他项目中重用的组件 如果这不是一个选项,那么像您的示

我想在c#.net中生成日历以输入每日出勤率。我在web中使用了jquery日历用于类似目的。是否有任何方法可以创建日历控件并获取click事件来标记和显示该控件中的值

谢谢

示例图像:


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

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

如果这不是一个选项,那么像您的示例这样简单的东西将很容易推广到您自己。我主要在WinForms中工作,因此以下是我构建表单的方法:

  • 创建自定义控件以显示任何给定的日期。您需要在上角为每月的某一天添加一个标签,并在标签上显示该天的文本(输入/输出时间)。也许加一个边框
  • 创建包含日历的窗体或控件
  • 添加一个工具条,该工具条与您的月份和年份控件固定在顶部。使用组合框或下拉按钮
  • 添加一个固定在顶部的薄面板,并添加天数标签。决定希望每个列的宽度,并基于该宽度定位标签
  • 添加一个
    FlowLayoutPanel
    并将
    Dock
    设置为
    Fill
    。这将包含“日”控件,这些控件将从左到右、从上到下流动
  • 现在,您需要的是代码,而不是设计器。这可能在构造函数、加载页面的
    处理程序中完成,或者在设置月/年(或初始化)时调用的某个地方完成:

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


    如果希望日控件动态调整大小,请注册包含控件的
    resize
    事件,并将每天控件的宽度和高度设置为
    Math.Floor(control.width/7)
    (七天宽)和
    Math.Floor(control.height/5)
    (五周高)你是否正在寻找开源/免费解决方案,或者你可以考虑购买一个组件库,比如DEVExtExxEdTrand和XtraScheduler或TeleRik组件吗?我是C语言的新手,我需要在例子中实现日历。比如需要添加点击日期的信息。你能给我推荐一些教程或代码吗?做你想做的事said@Heena这个()看起来很有趣