2010-06-15 63 views
0

我必须制作一个文本框(WPF),用于输入验证时间。 我想输入正则表达式验证的时间(早上6点12分)。TextBox中的时间验证。验证文本框的一些正则表达式

+1

请更具体一些。你在哪个部分挣扎? – fearofawhackplanet 2010-06-15 09:59:49

+0

我有一个文本框,用户可以在上面输入时间,例如上午6:00,或者用户可以在几分钟内给出时间,例如123>将使用转换器以时间格式进行转换。但我想对用户输入进行验证。我认为使用正则表达式会有所帮助。仍在寻找完美的解决方案。我已经实现了错误模板,所以没有关于如何抛出错误所需的帮助。 – Rohit 2010-06-15 10:23:13

+0

如果有多种格式,人们可能会输入时间格式(123可能是1:23或2:03)。你是否限制了用户输入时间的格式? – apoorv020 2010-06-15 11:03:13

回答

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

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

1

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