C# 文本框中的时间验证。验证某个正则表达式的文本框
我必须制作一个文本框(WPF),用于输入带有验证的时间。 我想输入时间(上午6:12)的正则表达式验证。选中此项:处理控件中的验证错误 否则,您可以在viewmodel中实现,以便将验证嵌入到数据本身。检查此项:以处理控件中的验证错误 否则,您可以在viewmodel中实现验证,以便将验证嵌入到数据本身。这个如何:C# 文本框中的时间验证。验证某个正则表达式的文本框,c#,wpf,C#,Wpf,我必须制作一个文本框(WPF),用于输入带有验证的时间。 我想输入时间(上午6:12)的正则表达式验证。选中此项:处理控件中的验证错误 否则,您可以在viewmodel中实现,以便将验证嵌入到数据本身。检查此项:以处理控件中的验证错误 否则,您可以在viewmodel中实现验证,以便将验证嵌入到数据本身。这个如何: class TimeTextBox : TextBox { public Boolean IsProperTime { get; set; } protected
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);
}
}
}
您可以更改其中的时间解析逻辑。这个如何:
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);
}
}
}
您可以更改其中的时间解析逻辑。这里的Regex不是正确的选择。您确实需要将字符串转换为日期或时间。使用DateTime.TryParse(),以便始终确保如果验证允许,则转换也会正常工作。Regex不是正确的选择。您确实需要将字符串转换为日期或时间。使用DateTime.TryParse(),以便始终确保如果验证允许,则转换也会起作用。请更具体一些。您正在努力解决哪一部分?我有一个文本框,用户可以在其中输入时间,如上午6:00,或者用户可以以分钟为单位给出时间,例如123>,该时间将使用转换器转换为时间格式。但我想对用户输入进行验证。我认为使用正则表达式会有所帮助。仍然在寻找一个完美的解决方案。我已经实现了错误模板,因此不需要关于如何抛出错误的帮助。如果有多种格式,人们可能会以他们熟悉的格式输入时间(123可能是凌晨1:23或2:03)。您是否限制用户输入时间的格式?是。我限制他们输入1:23而不是123。你的评论相互矛盾。请更具体一些。您正在努力解决哪一部分?我有一个文本框,用户可以在其中输入时间,如上午6:00,或者用户可以以分钟为单位给出时间,例如123>,该时间将使用转换器转换为时间格式。但我想对用户输入进行验证。我认为使用正则表达式会有所帮助。仍然在寻找一个完美的解决方案。我已经实现了错误模板,因此不需要关于如何抛出错误的帮助。如果有多种格式,人们可能会以他们熟悉的格式输入时间(123可能是凌晨1:23或2:03)。您是否限制用户输入时间的格式?是。我限制他们输入1:23而不是123。你们的评论相互矛盾。举手,毫无疑问这是目前为止最好的答案。举手,毫无疑问这是目前为止最好的答案。