Windows Forms - настройка MaskedTextBox
Мне нужно использовать базовую функциональность MaskedTextBox
, Я могу использовать 5-значную маску, но есть несколько вещей, которые я хочу изменить. Прямо сейчас коробка выглядит так:
и есть две вещи, которые мне не нравятся. Первый - 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
так что пользователь не может получить что-то похожее на ваш пример.