TextBox中的时间验证。验证某些正则表达式的文本框

时间:2010-06-15 09:55:29

标签: c# wpf

我要制作一个文本框(WPF),以便通过验证输入时间。 我想在时间(早上6:12)输入正则表达式验证。

3 个答案:

答案 0 :(得分:1)

检查:http://msdn.microsoft.com/en-us/library/system.windows.controls.validation.errors.aspx以处理控件中的验证错误

否则,您可以在viewmodel中实现IDataErrorInfo,以便将验证嵌入到您的数据本身。

答案 1 :(得分:1)

这个怎么样:

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);
        }
    }
}

您可以在那里更改时间解析逻辑。

答案 2 :(得分:1)

正则表达式不是正确的选择。您最终需要将字符串转换为日期或时间。使用DateTime.TryParse(),这样你总能确保如果验证允许,那么转换也会起作用。