WinForms - поведение выбора месяца DateTimePicker по умолчанию для Server 2003 и Server 2008?

Добрый день!

Кто-нибудь еще заметил изменение поведения по умолчанию стрелок «следующий» и «предыдущий» месяц в стандартном элементе управления WinForms DateTimePicker? У меня есть пользователи, работающие как на Windows Server 2003, так и на Windows Server 2008 R2, и они сообщают, что в 2008 (и Vista/Win7) нажатие стрелок вправо или влево в раскрывающемся календаре теперь выбирает первый день месяца, а не чем сохранение того же дня, как в 2003 (и XP).

Я проверил это (у меня машина с Win7) и подтвердил такое поведение. Я бы предпочел, чтобы поведение оставалось постоянным, когда это возможно. Кто-нибудь знает, что вызывает это и есть ли способ обойти это? Есть ли способ перехватить событие щелчка стрелкой и заставить полученную дату сохранить исходный день, а не сбрасываться на первое число месяца?

Я подумал о том, есть ли способ протестировать элемент управления в событии MouseUp и определить, были ли нажаты кнопки со стрелками, а затем переопределить установленное значение месяца, но я не уверен, что это вообще возможно. Может ли кто-нибудь дать некоторую мудрость или понимание? Спасибо!


person Mike Loux    schedule 21.05.2010    source источник


Ответы (1)


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

person Hans Passant    schedule 21.05.2010
comment
Это правда, но моя пользовательская база невелика (только компания, в которой я работаю), и именно они привлекли мое внимание. Я использую DTP в других приложениях, и общая идея заключалась в том, что если бы было исправление или хак, который мог бы помочь, то я мог бы либо написать расширение для элемента управления, либо просто применить код везде, где я использую элемент управления. . Если, конечно, исправления нет (а вчера я потратил изрядное количество времени, пробуя кучу вещей, которые не работали), то им просто придется разбираться (даже если я не (- :) Спасибо, Ганс. Это имеет смысл. - person Mike Loux; 23.05.2010
comment
Да, нет никакого хорошего способа исправить это. Если не считать сложности подкласса месячного календаря, сообщение MCN_SELCHANGE не позволяет точно узнать, как была изменена выбранная дата. Все перестанут жаловаться, когда перейдут на Win7. - person Hans Passant; 23.05.2010
comment
Я также заметил, что поведение ComboBox по умолчанию также изменилось в раскрывающемся режиме. Раньше вы могли выбрать нужный элемент с помощью текстового поиска или клавиш со стрелками, а затем выйти из элемента управления, оставаясь в раскрывающемся списке, и сохранить значение, к которому вы перешли. Теперь, если вы не нажмете Enter, чтобы принять значение, оно выберет следующее вниз при выходе из табуляции. Иди разберись... - person Mike Loux; 02.07.2010