Может ли MaskedTextBox winform разрешать пробелы?

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

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

Maskedtextbox, похоже, не сохраняет их, или, по крайней мере, то, как я настроил свойства, не сохраняет их (может быть, потому что у меня установлен «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;
}

person Gern Blanston    schedule 01.12.2011    source источник


Ответы (1)


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

        maskedTextBox.ResetOnSpace = false;

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

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

person Igby Largeman    schedule 01.12.2011