当用户在没有点击日期的情况下点击日历时,我不希望更改日期.问题是当datepickercalendar打开时总是选择一个日期.我在Calender控件中寻找类似于DateSelected事件的东西
我有一个派生自DateTimePicker的类,它使用带有spacechar字符串的自定义格式,以便为DateTimePicker提供空字段.
我发现stackoverflow中的一篇文章有同样的问题,但解决方案不起作用.我没有足够的积分来发表评论(现在无法找到链接:()
至于代码,这就是我所拥有的
Public Class CustomDP Inherits System.Windows.Forms.DateTimePicker Public Sub New() CustomFormat = " " Format = System.Windows.Forms.DateTimePickerFormat.Custom End Sub Protected Overrides Sub OnValueChanged(eventargs As System.EventArgs) MyBase.OnValueChanged(eventargs) End Sub Protected Overrides Sub OnCloseUp(eventargs As System.EventArgs) Format = DateTimePickerFormat.Short MyBase.OnCloseUp(eventargs) End Sub Protected Overrides Sub OnDropDown(eventargs As System.EventArgs) Format = DateTimePickerFormat.Custom MyBase.OnDropDown(eventargs) End Sub End Class
CodeProject上至少有一个DateTimePicker控件允许可为空的日期.但是有一种比这更简单的方法.
原文链接:https://www.f2er.com/vb/255583.html在设计中,将ShowCheckBox设置为True.然后,当表单加载或您正在重置字段时,将Checked设置为False.这使得DTP看起来被禁用,这有点不幸,但是当用户打开DTP时,会自动检查复选框.因此,要查看他们是否选择了日期,您需要做的就是评估Checked属性.如果在选择有效日期后取消选中它们,则禁用的外观最终表示该值并不真正计数.
如果您使用较小的版本(ShowUpDown),则控件将被禁用,直到它们首先单击复选框,然后选择要旋转的字段.对于每个字段的每次更改,您仍然会获得一个值更改事件,但这就是它应该如何工作.控件总是有一个有效的日期值,所以你不必检查Nothing等.