DateTimePicker ведет себя по-разному в XP и Windows Server 2008, когда установлен MaxDate? - PullRequest
1 голос
/ 20 января 2011

Я использую DateTimePicker в своем приложении winform.DateTimePicker позволяет пользователю выбрать дату, которая не больше DateTime.Now.Я сделал это, установив для элементов управления MaxDate значение DateTime.Now.

В XP все работает нормально, отображаются даты, превышающие DateTime.Now, и пользователь не может их выбрать.Но в Windows Server 2008 эти даты вообще не отображаются.

Это ожидаемое поведение или ошибка Microsoft?

XP alt text Windows Server 2008 alt text

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Встроенный элемент управления календаря месяцев в Windows претерпел довольно серьезные изменения в Vista, также являющейся базовой базой кода для Windows 2008. Это повлияло на классы DateTimePicker и MonthCalendar. Многие классы Winforms похожи на это.

В противном случае это считается изящным, ваш пользовательский интерфейс автоматически адаптируется к внешнему виду новой операционной системы и к тому, как другие программы ведут себя на ней, и вам вообще ничего не нужно делать. Не показывать даты, которые вы сделали невыбираемыми, возможно, имеет огромное значение. В противном случае вы ничего не можете сделать, чтобы изменить поведение собственного кода Windows, эти оболочки очень тонкие. Главным образом потому, что родные элементы управления Windows не имеют большого количества ручек.

Функция, а не ошибка.

1 голос
/ 20 января 2011

Многие элементы управления .NET зависят от базовой операционной системы. Если базовый элемент управления, используемый Windows для представления выбора даты и времени, отличается, то элемент управления, отображаемый в приложении Winforms, будет другим.

Вы можете видеть, что операционная система достаточно легко влияет на элементы управления только в XP. Измените свою тему со стандартной темы «cartoony», которая по умолчанию установлена ​​на Windows Classic, и запустите приложения .NET. Границы формы перейдут от скругленных углов и мультяшного интерфейса к классическому формату.

Средство выбора даты и времени, которое Windows по умолчанию использует, находится в MScomctl.ocx.

Если это изменилось между версиями Windows (что, я уверен, так и было), то ваши виндорги соответственно будут выглядеть и / или вести себя иначе.

...