Winforms 设置MaxDate时,DateTimePicker在XP和Windows Server 2008中的行为是否不同?

Winforms 设置MaxDate时,DateTimePicker在XP和Windows Server 2008中的行为是否不同?,winforms,datetimepicker,Winforms,Datetimepicker,我正在winform应用程序中使用DateTimePicker。DateTimePicker允许用户选择不大于DateTime.Now的日期。我通过将控件MaxDate设置为DateTime.Now来实现这一点 它在XP中工作正常,日期大于日期时间。现在显示,用户无法选择它们。但在WindowsServer2008中,这些日期根本不显示 这是预期行为还是microsoft错误 XP Windows Server 2008许多.NET控件依赖于底层操作系统。如果Windows用于表示日期时间选择器

我正在winform应用程序中使用DateTimePicker。DateTimePicker允许用户选择不大于DateTime.Now的日期。我通过将控件MaxDate设置为DateTime.Now来实现这一点

它在XP中工作正常,日期大于日期时间。现在显示,用户无法选择它们。但在WindowsServer2008中,这些日期根本不显示

这是预期行为还是microsoft错误

XP
Windows Server 2008

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

您可以看到,仅在XP上,这些控件就很容易受到操作系统的影响。将您的主题从默认的标准“卡通”主题更改为Windows Classic,然后运行您的.NET应用程序。表单边框将从圆角和卡通界面过渡到经典格式

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


如果这在Windows版本之间发生了变化(我确信它确实发生了变化),那么您的windorms的外观和/或行为将相应地发生变化。

本机Windows月历控件在Vista上得到了相当大的改进,Vista也是Windows 2008的底层代码库。这影响了DateTimePicker和MonthCalendar类,它们是围绕本机Windows提供的代码的非常简单的.NET包装器。很多Winforms类都是这样的

这被认为是一个不错的选择,你的用户界面会自动适应新操作系统的外观和感觉,以及其他程序在它上面的行为方式,而不需要你做任何事情。不显示您已设置为不可选择的日期可以说是非常有意义的。否则,您无法更改本机Windows代码的行为方式,因为这些包装非常薄。主要是因为本机Windows控件没有很多旋钮

功能,而不是bug