如果用户在文本框中输入的值太大,如何触发事件

本文关键字:事件 何触发 用户 文本 输入 如果 | 更新日期: 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中的错误

这将向您展示如何不仅在文本框周围显示红色,而且还如何显示消息。