如果用户在文本框中输入的值太大,如何触发事件
本文关键字:事件 何触发 用户 文本 输入 如果 | 更新日期: 2023-09-27 18:31:13
目前我有一个绑定到byte
属性的文本框。如果用户输入介于 0 和 255 之间,则应用程序将按预期运行,并且属性的 setter 将执行。
但是,如果用户输入 256 或更大,则属性的 setter 不会执行。发生的所有情况是文本框变为红色轮廓。我认为这是为了表明它是一个无效的值。
不过,这还不够好。我需要向用户显示一个消息框或一些注释,以通知他们这是一个无效的值。我需要做什么才能实现这一点?
您需要在页面上添加"验证摘要"控件。
默认情况下,这将被隐藏,但是当发生验证错误时(如在本例中输入大于 255 的值时),它将出现,告诉用户出了什么问题。
有几个这样的控件可用于 WPF,您需要评估它们并选择适合您的控件。您可能需要在数据层上设置一些属性,以控制显示的确切错误消息。
另一种可能性是定义文本框的 TextChanged 事件,以便每次文本更改时它都会执行 Int32.Parse。然后,如果值超过 255,它可以触发消息框。
如果你想刻薄,你可以使最大长度长两个字符,并强制用户输入十六进制的数字。
可以将验证错误处理程序添加到控件或窗口。
在窗口中构造函数:
this.AddHandler(Validation.ErrorEvent, new RoutedEventHandler(OnValidationError));
处理器:
private void OnValidationError(Object sender, RoutedEventArgs e)
{
if (e.OriginalSource is DependencyObject)
{
DependencyObject instance = e.OriginalSource as DependencyObject;
if (Validation.GetHasError(instance))
{
System.Collections.ObjectModel.ReadOnlyObservableCollection<ValidationError> errors = Validation.GetErrors(instance);
// todo build message from errors and display
}
}
}
我有一篇文章涵盖了你的要求。标题可能看起来与您要求的内容不匹配,但它恰好演示了您要求的功能。
如何禁用文本框上的按钮验证WPF中的错误
这将向您展示如何不仅在文本框周围显示红色,而且还如何显示消息。