Windows Forms - настройка MaskedTextBox

Мне нужно использовать базовую функциональность MaskedTextBox, Я могу использовать 5-значную маску, но есть несколько вещей, которые я хочу изменить. Прямо сейчас коробка выглядит так:

MaskedTextBox

и есть две вещи, которые мне не нравятся. Первый - Prompt char что подо _, Я удалил значение поля, чтобы оставить его пустым (как я хотел бы, чтобы оно появилось), но это дает ошибку - The property value is invalid, Так есть ли способ избавиться от этих подчеркиваний? И второе - я использую это значение для одного из моих свойств сущности целочисленного типа, поэтому я делаю преобразование:

if (txtNumOfAreas.Text != "")
            {
                string temp = txtNumOfAreas.Text;
                bool result = Int32.TryParse(temp, out convertValue);
                if (result)
                {
                    entity.AreasCnt = convertValue;
                }
                else
                {
                    MessageBox.Show(Resources.ERROR_SAVE, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return false;
                }
            }
            else
            {
                entity.AreasCnt = null;
            }

который работает нормально, если кто-то не решит провести эксперименты и вставить что-то вроде _1__5_ тогда преобразование завершается неудачно, но в первую очередь я хотел бы сделать возможным писать цифры только одну за другой. Так это тоже возможно?

2 ответа

Решение

Похоже, что ваш MaskedEdit доставляет больше хлопот, чем стоит решать ваши конкретные проблемы. Лучшим элементом управления может быть NumericUpDown.

Преимущество NumericUpDown:

  • Там нет подсказки подчеркивания, чтобы попытаться избавиться от
  • Он будет принимать только числовой ввод
  • Таким образом, нет необходимости пытаться преобразовать значение. У вас всегда будет целое число
  • Установка свойств минимального и максимального значений обеспечивает автоматическую проверку ввода данных
  • Предоставляет несколько режимов ввода данных:
    • Typing
    • Нажатие кнопок вверх / вниз с помощью мыши
    • Вверх / вниз с помощью клавиатуры
  • Если хотите, вы можете полностью скрыть кнопки "вверх / вниз": C# WinForms элемент управления numericUpDown (снятие поля прокрутки)

Таким образом, чтобы получить _ чтобы быть пробелом, вам просто нужно установить символ маски на один пробел. И чтобы устранить ошибку преобразования, просто установите AllowPromptAsInput собственность на false так что пользователь не может получить что-то похожее на ваш пример.

Другие вопросы по тегам