DateTimePicker-подобный элемент управления вводом - PullRequest
2 голосов
/ 03 марта 2009

Я не очень разбираюсь в разработке .NET, поэтому прости меня, если я упустил что-то очевидное.

Мой сценарий довольно прост: моя программа будет иметь дело как с Имперской, так и с Метрической системами измерения. Мне нужен элемент управления вводом, который сможет элегантно разместить {футы, дюймы} и ​​{метры, сантиметры} (только один комплект за раз).

Из того, что я видел в VC # Control Toolbox (Winforms .NETF 3.5), я ищу сочетание MaskedTextBox, NumericUpDown и DateTimePicker.

А именно:

  • MaskedTextBox способность фильтрации пользовательского ввода
  • NumericUpDown способность [in / de] создавать выбранную пользователем [под-] единицу измерения
  • DateTimePicker способность «разбивать» информацию в одном элементе управления. Я особенно заинтересован в том, чтобы разбить на части, скажем, футы и дюймы, все еще отображая их на том же элементе управления

Я также должен отметить, что меня больше всего интересует репликация способности DateTimePicker хранить отдельные части ввода в одном элементе управления.

Я был бы очень признателен за ваши мысли о том, какой базовый элемент управления я должен подклассить для достижения этой функциональности.

Ура!

Ответы [ 2 ]

1 голос
/ 03 марта 2009

Вы просматривали эту статью проекта кода , которая может быть отправной точкой.

0 голосов
/ 03 марта 2009

Я думаю, что DateTimePicker недостаточно гибок, чтобы сделать это.

Вы должны создать составной пользовательский элемент управления. Основной элемент управления должен содержать:

  • Три элемента управления NumericUpDown (год, месяц, день)
  • Делегировать события каждому событию Validate (вместо маскированного текстового поля)
  • Показать элемент управления Calendar, когда т.е. пользователь нажимает на элемент управления NumbericUpDown (или вы можете выделить кнопку с меткой «...» справа)

Или вы можете искать в CodeProject или Codeplex для открытых источников, а Telerik и DevX для условно-бесплатных компонентов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...