65.9K
CodeProject 正在变化。 阅读更多。
Home

比 DateTimePicker 更好的日期控件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.97/5 (18投票s)

2006 年 3 月 30 日

CPOL

3分钟阅读

viewsIcon

150495

downloadIcon

7144

使用键盘输入日期值和使用传统 DateTimePicker 选择日期一样快。

Sample Image - Better_Date_Time_Picker.gif

背景

在数据库应用程序中,日期处理比验证其他数据类型要困难一些,并且通过键盘输入需要额外的操作。 解决此问题的常见方法是使用 Microsoft 提供的 DateTimePicker 控件。 不幸的是,DateTimePicker 并不适合通过键盘快速输入数据,而这在数据库驱动的应用程序中总是需要的。 我收到了来自最终用户的几条抱怨,他们不想使用鼠标选择日期,或者当通过键盘在 DateTimePicker 中输入日期时,需要按额外的键才能将光标从日期的一部分移动到下一部分,等等。 这就是开发一个新的 DateTimePicker 的动机,它将使用户能够更快地输入日期,并可以通过使用键盘或鼠标以其他方式进行输入。

引言

我所做的是,创建了一个带掩码的文本框控件来通过键盘输入日期,并且还附加了一个 DateTimePicker 控件来通过鼠标输入日期。 它还具有验证用户输入的功能,如果日期无效,则文本颜色将显示为红色。 此外,将其属性 “IsValid” 设置为 false。 为了验证日期,我做了一个技巧:只需将 DateTimePicker 的值设置为在 TextBox 中输入的值, DateTimePicker 将为无效的日期值生成一个异常,并且颜色将变为红色。

使用控件

它像其他控件一样很容易使用。 只需将其添加到工具箱中,然后将其拖放到您要使用的表单上即可。 我将在此处概述设计时和运行时可以使用的属性。

我尝试公开属性,就像在 DateTimePicker 中一样,因此如果您要用这个控件替换现有项目中的 DateTimePicker,则不必更改代码。

属性

  • 以日期的形式返回值;与 DateTimePicker 相同。

  • DateTimePicker 的 ‘Value.Day’ 相同,但您将提前一步,只需 ‘Control1.Day’ 即可。

  • DateTimePicker 的 ‘Value.Month’ 相同,但您将提前一步,只需 ‘Control1.Month’ 即可。

  • 年份
  • DateTimePicker 的 ‘Value.Year’ 相同,但您将提前一步,只需 ‘Control1.Year’ 即可。

  • SQLValue
  • 使用 DateTimePicker 的值与 SQL Server 一起使用时所需的特定属性,因为 SQL Server 需要“yyyy\MM\dd”的日期格式才能正常工作。 此属性返回格式化后的日期。

  • DateFormat
  • 指定您要使用的日期格式;目前,支持三种格式:DMY、MDY、YDM。

  • IsValid
  • 一个只读属性,返回控件的状态。 在将表单输入提交回 DBMS 之前,可以使用此属性验证表单输入。

  • AllowNull
  • 此属性用于替换与默认 DateTimePicker 一起显示的复选框,该复选框通常会在您尝试在代码中选中或取消选中时引起问题。 因此,现在,当我们需要有一个可空的日期列时,将使用此属性来允许 null 或不允许。 如果文本框为空,则它将返回 null,这意味着用户不想输入日期。

事件

  • ValueChanged
  • 您可以为值更改事件编写自定义代码,就像我们为 DateTimePicker 编写的那样。

方法

  • Clear
  • 如果 AllowNull 设置为 true,则可以使用它来清除日期;然后它会将 value 属性设置为 null 并清除控件的文本;否则,将控件文本设置为当前日期和值。

© . All rights reserved.