Проверка времени в TextBox.Проверка текстового поля для некоторого регулярного выражения - PullRequest
0 голосов
/ 15 июня 2010

Я должен сделать текстовое поле (WPF) для ввода времени с проверкой. Я хочу ввести регулярное выражение для проверки времени (6:12 утра).

Ответы [ 3 ]

1 голос
/ 15 июня 2010

Как насчет этого:

class TimeTextBox : TextBox
{
    public Boolean IsProperTime { get; set; }

    protected override void OnTextChanged(TextChangedEventArgs e)
    {
        DateTime time;

        if (String.IsNullOrEmpty(Text) || !DateTime.TryParse(Text, out time))
        {
            IsProperTime = false;
        }
        else
        {
            IsProperTime = true;
        }

        UpdateVisual();

        base.OnTextChanged(e);
    }

    private void UpdateVisual()
    {
        if (!IsProperTime)
        {
            BorderBrush = Brushes.Red;
            BorderThickness = new Thickness(1);
        }
        else
        {
            ClearValue(BorderBrushProperty);
            ClearValue(BorderThicknessProperty);
        }
    }
}

Здесь можно изменить логику разбора времени.

1 голос
/ 15 июня 2010

Regex не является правильным выбором здесь.Вам необходимо преобразовать строку в дату или время.Используйте DateTime.TryParse (), чтобы вы всегда были уверены, что если проверка допустит это, преобразование также будет работать.

1 голос
/ 15 июня 2010

проверьте это: http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.errors.aspx для обработки ошибок проверки в элементах управления

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...