Курсор / позиция выбора в DateTimePicker - PullRequest
0 голосов
/ 17 ноября 2009

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

Я посмотрел параметры Win32 API для DateTimePicker ( ссылка ), но, похоже, это не поддерживается.

Есть предложения?

1 Ответ

0 голосов
/ 17 ноября 2009

Выбор даты .Net cf - это PITA.

Вы пытались перехватить и переопределить событие KeyUp для кнопки «Вправо», когда фокус находится на средстве выбора даты? Вы можете посчитать, сколько раз была нажата «правая» клавиша, и таким образом вы можете подделать настройку позиции: установите переменную счетчика на 1, когда сборщик даты получает фокус, и увеличивайте на единицу, когда вы перехватываете «правую» клавишу. Проверьте, является ли это клавишей «Вправо» и является ли переменная-счетчик кратной трем, установите e.Handled = true, чтобы предотвратить выполнение поведения по умолчанию. Конечно, ваша логика переопределения будет заключаться в том, чтобы установить фокус на следующий элемент управления.

Редактировать: не забудьте уменьшить счетчик var при нажатии левой клавиши!

Пользовательский вариант: я думаю, что вам лучше всего создать собственный пользовательский элемент управления датой. я сделал это Это не так уж сложно. Это вопрос выравнивания трех текстовых полей в элементе управления и выполнения некоторой базовой проверки. Вы также все еще используете календарную часть сборщика, если вам нужно.

Также стоит заглянуть в OpenNetCF . В нем масса классов, хотя я не уверен, будет ли альтернатива сборщику даты. Тем не менее, если вы серьезно занимаетесь разработкой CF, стоит посмотреть.

...