比 DateTimePicker 更好的日期控件






3.97/5 (18投票s)
使用键盘输入日期值和使用传统 DateTimePicker 选择日期一样快。
背景
在数据库应用程序中,日期处理比验证其他数据类型要困难一些,并且通过键盘输入需要额外的操作。 解决此问题的常见方法是使用 Microsoft 提供的 DateTimePicker
控件。 不幸的是,DateTimePicker
并不适合通过键盘快速输入数据,而这在数据库驱动的应用程序中总是需要的。 我收到了来自最终用户的几条抱怨,他们不想使用鼠标选择日期,或者当通过键盘在 DateTimePicker
中输入日期时,需要按额外的键才能将光标从日期的一部分移动到下一部分,等等。 这就是开发一个新的 DateTimePicker 的动机,它将使用户能够更快地输入日期,并可以通过使用键盘或鼠标以其他方式进行输入。
引言
我所做的是,创建了一个带掩码的文本框控件来通过键盘输入日期,并且还附加了一个 DateTimePicker
控件来通过鼠标输入日期。 它还具有验证用户输入的功能,如果日期无效,则文本颜色将显示为红色。 此外,将其属性 “IsValid
” 设置为 false
。 为了验证日期,我做了一个技巧:只需将 DateTimePicker
的值设置为在 TextBox
中输入的值, DateTimePicker
将为无效的日期值生成一个异常,并且颜色将变为红色。
使用控件
它像其他控件一样很容易使用。 只需将其添加到工具箱中,然后将其拖放到您要使用的表单上即可。 我将在此处概述设计时和运行时可以使用的属性。
我尝试公开属性,就像在 DateTimePicker
中一样,因此如果您要用这个控件替换现有项目中的 DateTimePicker
,则不必更改代码。
属性
值
日
月
年份
SQLValue
DateFormat
IsValid
AllowNull
以日期的形式返回值;与 DateTimePicker
相同。
与 DateTimePicker
的 ‘Value.Day
’ 相同,但您将提前一步,只需 ‘Control1.Day
’ 即可。
与 DateTimePicker
的 ‘Value.Month
’ 相同,但您将提前一步,只需 ‘Control1.Month
’ 即可。
与 DateTimePicker
的 ‘Value.Year
’ 相同,但您将提前一步,只需 ‘Control1.Year
’ 即可。
使用 DateTimePicker
的值与 SQL Server 一起使用时所需的特定属性,因为 SQL Server 需要“yyyy\MM\dd”的日期格式才能正常工作。 此属性返回格式化后的日期。
指定您要使用的日期格式;目前,支持三种格式:DMY、MDY、YDM。
一个只读属性,返回控件的状态。 在将表单输入提交回 DBMS 之前,可以使用此属性验证表单输入。
此属性用于替换与默认 DateTimePicker
一起显示的复选框,该复选框通常会在您尝试在代码中选中或取消选中时引起问题。 因此,现在,当我们需要有一个可空的日期列时,将使用此属性来允许 null
或不允许。 如果文本框为空,则它将返回 null
,这意味着用户不想输入日期。
事件
ValueChanged
您可以为值更改事件编写自定义代码,就像我们为 DateTimePicker
编写的那样。
方法
Clear
如果 AllowNull
设置为 true
,则可以使用它来清除日期;然后它会将 value 属性设置为 null
并清除控件的文本;否则,将控件文本设置为当前日期和值。