处理包含大量DateTimePicker控件的Windows窗体项目。
要求是在表单加载时,日期控制器是空的'没有预先选择或填充的日期。 我们通过将日期设置为'昨天来实现这一目标。和#34;"的自定义日期格式。这给了我们一个空白的加载日期。
这一切都很好,但我们现在已经注意到,当用户选择/点击控制器并第一次选择新日期时,所选日期将由日历本身填充而不会被忽略。
然后,用户需要在控制器外部点击以关闭日历(因为日历在此状态下几乎没有响应任何进一步的选择)。
一旦他手动解散,点击控制器并选择一个日期,第二次自动解除日历。
它似乎处于第一个状态,日历不会被解雇。可能由于将自定义格式更改为新选择的格式导致日历得到?我不确定..
正在查看DateTimePicker的事件和方法,并且无法找到我可以调用的任何内容,如果它当前处于打开状态,则会将其解除。
谢谢!
答案 0 :(得分:1)
我的计算机上没有Windows 8.1上的repro。 CustomFormat属性设置为“”也不是“空白”,默认为dd / MM / yyyy。
Windows版本非常重要,这个控件在各个版本中都有很大的改进。它是Windows本身的重要控件,也是用户在安装操作系统时与之交互的第一个控件。并由任务栏中的Clock小程序使用。
写在墙上,即使它在你的机器上看起来“空白”,那么它也不会在用户的机器上。鉴于额外的失败模式,CustomFormat是一个麻烦的属性,需要在更改时重新创建窗口,没有必要追求这一点。如果疼,那就不要这样做。没有用户会认为1900年1月1日是有效日期。跳到脑海的一个简单的替代方案是将DTP与标签重叠。也许在UserControl中。只需在输入有效日期时隐藏标签即可。 Nullable DTP是最受欢迎的codeproject.com项目。