Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > MaskedTextBox - раздельное редактирование полей


Автор: snav 13.10.2007, 08:38
Добрый день.

Стоит задача ввести значение угла, выраженное в градусах, минутах и секундах. Использовать нестандартные контролы не хочется, поэтому остановился на MaskedTextBox. В контроле создаются поля градусов, минут и секунд, разделенные константными символами, например: [ 12° 34' 56" ]. Проблема в том, что невозможно настроить MaskedTextBox так, чтобы поля редактировались раздельно. Если, например, пользователь сотрет значение минут (34), то цифры секунд переползут в поле минут и получится [ 12° 56' __" ]. Практика показала, что это очень неудобно. Хотелось бы, чтобы при стирании одного поля другие поля не менялись: [ 12° __' 56" ]. Видимо, здесь не обойтись без ручной обработки событий, но никак не могу придумать, как это сделать попроще. Можете что-нибудь посоветовать? 

Автор: yar 13.10.2007, 12:29
Вот http://www.codeproject.com/cs/miscctrl/nme.asp?df=100&forumid=291800&exp=0&select=1848578 есть улучшенный контрол на базе MaskedTextBox, который работает как надо и статья на эту тему. Так или иначе, без существенной доработки стандартного MaskedTextBox не обойтись.

Автор: snav 13.10.2007, 16:44
yar
Спасибо. Примерно так я и представлял. Но, честно говоря, мне не очень нравится идея самому обрабатывать все возможные комбинации клавиш: Del, Backspace, Ctrl+X, Shift+Del, Ctrl+Z, Alt+Backspace. Это слишком трудоемко и, кроме того, мне кажется, что привязка к предопределенным клавишам - не самый лучший стиль программирования... Может быть есть более изящное решение?


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)