Может ли MaskedTextBox winform разрешить пробелы? - PullRequest
1 голос
/ 01 декабря 2011

У меня есть форма, которая динамически создается с добавлением нескольких маскированных текстовых полей и набором их свойств (как в приведенном ниже коде).

Если требуется 10 символов, код необходимо проверить, если введенный текстдлина - 10. Но пользователю разрешено вводить пробелы в начале или конце, чтобы они составляли эти 10 символов.

Кажется, маска-текст не сохраняет их, или, по крайней мере, так, как я установил свойствадо этого он их не держит (может, б / с у меня установлена ​​'C'?)

Я мог бы просто что-то неправильно установить в свойствах ... как с AllowPromptAsInput или TextMaskFormat или некоторыми другимидругое свойство, чтобы разрешить это.

Также я не хочу использовать пробел в качестве 'PromptChar', так как я хочу, чтобы пользователь видел количество вводимых символов.

private void SetupMaskedTextBox(int allowedChars)
{
    const char promptCharSquare = '\u25A1';
    maskedTextBox.PromptChar = promptCharSquare;
    string msk = null;
    for (int i = 0; i < allowedChars; i++) {
        msk += "C";
    }
    maskedTextBox.Mask = msk;
    maskedTextBox.AllowPromptAsInput = true;
    maskedTextBox.TextMaskFormat = MaskFormat.IncludePromptAndLiterals;
}

1 Ответ

4 голосов
/ 01 декабря 2011

Вам нужна эта строка:

        maskedTextBox.ResetOnSpace = false;

Это немного странная особенность. MSDN говорит использовать :

true, если вводимый символ пробела вызывает текущую редактируемую позицию в маске для сброса; в противном случае false, чтобы указать, что это должно быть обрабатывается как обычный символ ввода . По умолчанию установлено значение true.

...