Вопрос

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

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

Какие-либо предложения?

Это было полезно?

Решение

Средство выбора даты .Net cf — это PITA.

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top