C#日历控件的三个编程步骤

开发 后端
本文将介绍编写C#日历控件的三个步骤,包括日期选择,其次是用户的选择。希望本文能对大家有所帮助。

C#日历控件编程过程中,需要在把会议添加到数据库中之前,先修改一下日历的显示。最好用另一种颜色显示登记之前的日期,以防该日期被选中。这要求修改我们在日历中设置日期的方式,以及日期单元格的显示方式。 

首先是日期选择。有3个地方需要查看会议登记的日期来电弹屏,并修改相应选择:一是在Page_ Load()中设置初始日期时,第二是在用户试图从日历中选择日期时,第三情况是登记一个会议,并设置一个新的日期,以防用户在选择新日期前,在同一天连续登记两个会议。这些都是很常见的情况,也可以创建一个私有方法来执行这个计算。这个方法应接受一个试用日期作为参数,并返回要使用的日期,该日期与试用日期相同,也可以是试用日期之后的某个日期。  把这个getFreeDate()方法添加到后台编码文件中: 

  1. private System.DateTime getFreeDate(System.DateTime trialDate)   
  2. if (eventTable.Rows.Count >0)   
  3. { System.DateTime testDate; bool trialDateOK = falsewhile (!trialDateOK)   
  4. { beach wedding dresses  trialDateOK = trueforeach (System.Data.DataRow testRow in eventTable.Rows)   
  5. { testDate = (System.DateTime)testRow["EventDate"];   
  6. if (testDate.Date == trialDate.Date)   
  7. { trialDateOK = false; trialDate = trialDate.AddDays(1);   
  8. } } } }   
  9. return trialDate;   
  10. }  

这段简单的代码使用在Page_Load()中填充的对象eventTable提取会议数据。首先看看一般情况:没有登记任何会议,此时返回该试用日期,以确认该日期英国留学,接着对Event表中的日期进行迭代,把该日期与试用日期比较。如果找到一个匹配,就给试用日期加一天,执行另一次搜索。  从DataTable中提取数据是相当简单的:testDate = (System.DateTime)testRow["EventDate"];  把列数据转换为Sytem.DateTime,这样会更精确。  使用getFreeDate()的第一个地方是在Page_Load()后面。这意味只需对设置SelectedDate属性的代码稍加修改: 

  1. if (!this.IsPostBack)   
  2. { System.DateTime trialDate = System.DateTime.Now; calendar.SelectedDate = getFreeDate(trialDate); this.DataBind();  
  3.  }   

接着需要响应C#日历控件上的日期选择。为此,需要先带馅面条机为日历的SelectionChanged事件添加一个事件处理程序,强制检查现有会议的日期。双击设计器中的日历,添加如下代码: 

  1. private void calendar_SelectionChanged(object sender, System.EventArgs e)   
  2. { System.DateTime trialDate = calendar.SelectedDate; calendar.SelectedDate = getFreeDate(trialDate);   
  3. }   

这段代码与Page_Load()相同。  执行这种检查的第三个地方是响应登记按钮的单击。后面会解释它,因为后面进行了许多改变。  接着把日历的日期单元格变为另一种颜色,以表示现存的会议。为此,需要给日期对象的DayRender事件添加一个事件录音系统处理程序。每次显示一个日期时,都会触发这个事件,并允许通过在处理程序中接收到的DayRenderEventArgs参数的Cell 和 Date属性,访问要显示的单元格对象和这个单元格的日期。我们需要比较要显示的单元格中的日期和eventTable对象中的日期,如果匹配,就可以使用Cell.BackColor属性为单元格着色: 

  1.  protected void calendar_DayRender(object sender, System.Web.UI.WebControls.DayRenderEventArgs e)   
  2. if (eventTable.Rows.Count >0)   
  3. { System.DateTime testDate; foreach (System.Data.DataRow testRow in eventTable.Rows)   
  4. { prom dresses  testDate = (System.DateTime)testRow["EventDate"]; if (testDate.Date == e.Day.Date) { e.Cell.BackColor = Color.Red;   
  5. } }  
  6. } }   

这里使用红色,得到屏幕图25-6。三月的15、27、28、29和30日都有会议,所以用户选择了17日。

【编辑推荐】

  1. C# 4.0 Dynamic关键字全解析
  2. 浅谈C#中构造函数和成员函数
  3. C#回调函数及API应用浅析
  4. 详解C# Object.Equals函数
  5. C#调用Windows API函数
责任编辑:彭凡 来源: cnblogs
相关推荐

2009-08-11 15:46:15

C#日历控件

2009-08-21 17:48:13

C#读取文件信息

2009-08-06 11:00:19

C#对象的使用

2009-08-26 17:56:20

C#制做Active控

2009-08-25 17:13:57

C#串口编程

2022-05-12 12:55:28

容器Kubernetes运行容器

2021-08-19 11:22:22

深度学习编程人工智能

2021-10-13 06:59:03

Python技巧编程

2020-07-03 07:56:34

Golang编程语言

2022-10-12 14:33:15

数字化转型网络安全数据中心

2021-01-15 10:51:32

物联网安全物联网IOT

2019-01-29 07:14:41

2010-08-02 23:40:42

Linux NFS

2009-08-13 17:22:15

C#数据集

2009-08-04 13:23:40

C# 自定义控件dll

2022-04-15 09:30:00

Kubernetes云计算多云

2021-10-12 09:23:29

物联网安全物联网IOT

2010-11-15 09:56:30

2010-06-28 13:40:22

SNMP协议服务

2020-07-20 09:20:44

云计算云安全数据
点赞
收藏

51CTO技术栈公众号