2011-01-20 81 views
1

我在我的winform应用程序中使用DateTimePicker。 DateTimePicker允许用户选择一个不大于DateTime.Now的日期。我通过将控件MaxDate设置为DateTime.Now来做到这一点。当MaxDate设置时,DateTimePicker在XP和Windows Server 2008中的行为有所不同?

它在XP中正常工作,显示大于DateTime.Now的日期,并且用户无法选择它们。但在Windows Server 2008中,这些日期根本不显示。

这是预期行为还是微软错误?

XP alt text Windows Server 2008的alt text

回答

2

本机Windows月历日历控件在Vista上得到了一个相当重大的改进,也是Windows 2008的基础代码基础。这影响了DateTimePicker和MonthCalendar类,它们是本地Windows提供的代码非常简单的.NET包装。很多Winforms类都是这样的。

这被认为是一个很好的东西,你的用户界面自动适应新操作系统的外观和其他程序的行为方式,而无需你做任何事情。不显示你已经无法选择的日期可以说是非常有意义的。除此之外,没有任何事情可以改变原生Windows代码的行为方式,这些包装器非常薄。主要是因为本机Windows控件没有很多旋钮。

功能,而不是一个错误。

1

许多.NET控件的依赖于底层的操作系统。如果Windows用来代表日期时间选择器的基础控件不同,那么Winforms应用程序中显示的控件将会不同。

您可以看到,只有在XP上,操作系统才能轻松控制操作系统。将主题从默认的标准“cartoony”主题更改为Windows Classic,然后运行.NET应用程序。表单边界将从圆角和卡通界面变成具有经典格式。

Windows默认使用的日期 - 时间选择器位于MScomctl.ocx中。

如果在Windows版本(我确信它已经这样做)之间发生了变化,那么您的风暴会相应地看起来和/或行为不同。

相关问题