WPF Textbox использовать текст по умолчанию - PullRequest
1 голос
/ 12 февраля 2011

У меня есть TextBox, в который я хочу, чтобы мои пользователи вводили значение времени в формате XX: XX: XX. У меня уже есть проверка на месте, чтобы убедиться, что они вводят его в этом формате. Однако теперь я хотел бы, чтобы двоеточия были автоматически. Я хотел бы, чтобы они были в текстовом поле, и когда пользователь вводит числа, они просто пропускают двоеточия. Возможно ли иметь какой-то формат декоратора для TextBox?

РЕДАКТИРОВАТЬ: я использую WPF 4.

Ответы [ 3 ]

4 голосов
/ 12 февраля 2011

вы можете использовать маскированное текстовое поле из набора инструментов wpf

http://wpftoolkit.codeplex.com/wikipage?title=MaskedTextBox&referringTitle=Home

0 голосов
/ 13 февраля 2011

Использование трех TextBox-ов, как предположил Эрно, возможно, является лучшим решением, но вы также можете использовать событие TextChanged для добавления двоеточий в текст (что может сбить пользователя с толку), вот код, который вставит их послевторой и пятый символы:

private void TextBox_TextChanged(object sender, TextChangedEventArgs e)
{
    TextBox tb = sender as TextBox;
    if (e.Changes.Count == 1)
    {
        if (e.Changes.ElementAt(0).AddedLength == 1 && (tb.Text.Length == 2 || tb.Text.Length == 5))
        {
            tb.Text += ":";
            tb.SelectionStart = tb.Text.Length;
        }
    }
}
0 голосов
/ 12 февраля 2011

Если вы хотите придерживаться vanilla WPF, вы можете создать пользовательский элемент управления и добавить 3 текстовых поля.

Поместите двоеточия между ними и обработайте события нажатия клавиш, чтобы передать фокус из одного текстового поля в другое и одновременно принимать только цифры.

Опять же: использование инструментария может быть менее трудоемким.

...