Маскированное текстовое поле удаляет предшествующие нули в дате - PullRequest
0 голосов
/ 08 января 2010

У меня есть процесс, который берет дату рождения и из таблицы данных и отображает их в текстовом поле с маской для просмотра и редактирования

Однако при вставке данных в текстовое поле удаляются все предыдущие нули

Например, 05.05.2005 будет отображаться как 55/20/05 __

Текстовое поле с маской установлено как 00/00/0000

Строка, которая присваивает код:

MaskedTextBox.Text = Format(DataTable(0)("DOB"), “MM/dd/yyyy”).ToString

На сегодняшний день я пробовал следующее:

  • Удалить и повторно добавить элемент управления
  • Скопировать замаскированное текстовое поле из другой формы в той же программе
  • Текстовое поле над маской захватывает то же самое информация из той же базы данных таблица и отформатирована именно тоже самое и работает
  • пробовал разные разные форматы в том числе без формата все с тем же результат

У кого-нибудь есть еще предложения?

Ответы [ 4 ]

2 голосов
/ 10 октября 2012

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

Теперь, когда я точно выяснил, как воспроизвести проблему, мы надеемся, что кто-то более осведомленный может прийти, чтобы выяснить, как обойти это. Кажется, что это глюк в VB. Не знаю, является ли это фактическим «ответом», но я дал четкий путь к поиску решения. У меня просто нет ноу-хау, чтобы зайти так далеко.

(Обновление: я обнаружил, что он делает это со всеми масками, а не только с "короткими датами")

1 голос
/ 12 января 2010

Я думаю, мне придется поместить это в поле «Тайны необъяснимого».

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

Я действительно не знаю, как вообще воссоздать проблему, должно быть что-то в коде уровня разработки форм ???

В любом случае, спасибо всем за помощь.

0 голосов
/ 11 января 2015

У меня была та же проблема с элементом управления Masked a Text Box, который был добавлен во время выполнения. Я просто пытался добавить дату дня в элемент управления

Визуальная студия 2013

Dim Today As Date = Now.Date
tbox_ShipDate.Text = FormatDateTime(Today,DateFormat.ShortDate) 'Failed every time

Проблема была решена с помощью

tbox_ShipDate.Text = Format(Today, "MM/dd/yyyy")

казалось простым, но все работало хорошо

0 голосов
/ 08 января 2010

Попробуйте преобразовать данные в дату и обратно:

MaskedTextBox.Text = Date.Parse(DataTable(0)("DOB")).ToString("MM/dd/yyyy")

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

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