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

标签 c# calendar windows-applications

我想在 c#.net 中生成日历以输入每日出勤。我在 web 中将 jquery 日历用于类似目的。有什么方法可以创建日历控件并获取点击事件来标记和显示其中的值。

谢谢

示例图片:

enter image description here

最佳答案

如果您有预算,我肯定会选择商业组件,例如 Telerik's Scheduler Control .该系列的售价为 999 美元,我以前从未使用过 Telerik 的控件,所以我自己不能推荐它们,但从长远来看,如果您可以在其他项目中重复使用这些组件,从长远来看,它是值得的。

如果那不是一个选项,那么像您的示例一样简单的事情将很容易实现。我主要在 WinForms 中工作,所以这就是我构建表单的方式:

  1. 创建一个自定义控件来显示任何给定的一天。您需要在右上角有一个标签来表示月份中的某一天,以及一个标签来显示当天的文本(进/出时间)。也许添加边框。
  2. 创建一个包含日历的窗体或控件
  3. 添加一个与月份和年份控件一起停靠在顶部的工具条。使用组合框或下拉按钮。
  4. 添加一个停靠在顶部的薄面板,并为日期添加标签。确定您希望每列的宽度并根据该宽度放置标签。
  5. 添加一个 FlowLayoutPanel 并将 Dock 设置为 Fill。这将包含“天”控件,这些控件将从左到右、从上到下排列。

现在您需要在代码中工作,而不是设计人员。这可能在构造函数、Page_Load 处理程序或设置(或初始化)月/年时调用的某个地方完成:

  1. FlowLayoutControl 添加足够的空面板以填充月初。您可以使用 new DateTime(year, month, 1).DayOfWeek 找出要添加的数量,以找到该月的第一天。空白面板应设置为与“日”控件相同的大小。
  2. 为一个月中的每一天向 FlowLayoutControl 添加一个 day 控件。使用 DateTime.DayInMonth(year, month) 查找所选月份的天数,并根据您的日期(可能还有输入/输出数据)设置每个“天”控件重新添加它。
  3. 现在尝试在“日”控件和填充面板上填充和边框,直到一切看起来正确为止。您可以在设计器中添加一些测试“日”控件和面板以测试那里的布局,只需在设置代码中调用 flowLayoutControl.Items.Clear()

这应该会产生一个可以动态显示任何月份的控件。要添加出勤编辑功能,请在“天”控件或日历控件本身中设置一个 Click 处理程序(当您将“天”控件添加到 FlowLayoutControl,然后打开模态窗体以编辑或添加所选日期的进出时间。

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

关于c# - 如何在 c#.net windows 应用程序中生成日历,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609046/

相关文章:

java - URL '/session' 未映射到有效资源 |如何使用 java 使用 winAppDriver/windows 应用程序驱动程序运行桌面应用程序测试?

Java 日历时区困惑

c# - 当工厂方法返回 null 时,我应该抛出什么异常?

c# - 语音识别问题

c# - 后代非泛型类到基泛型类

html - LightSwitch 日历屏幕

javascript - 更改时自动调整依赖状态,反之亦然

c# - sql命令不适用于c#中的select语句

c# - 在 Crystal Report 中,第一项图像未显示

c# - 通过 nPgSQL 接收 NOTIFY 负载