
在 VFP 中,几乎没有人使用 ErrorProvider,但不可否认,它是一个优秀的自定义组件(类)。如果你还不了解它,可以通过访问 http://www.mzvfp.com/forum/read.php?tid=76128 来获得。
我刚刚又访问了一次,看到的是浏览次数 2284,下载次数 11 。
从设计角度出发,它提供了一种比 MessageBox 更优雅的错误信息提示方式,避免模式信息对话框造成的所谓操作中断,可以提供更好的交互体验。因此,在我的开发框架中,它被普遍应用以替代 MessageBox 。
在 VFP 中,我对其予以一定的修改,以更加符合VFP的设计思维。但是,在 .NET 中,我还没有达到同样的技术能力,因此,当我在 X#(XSharp)中试图重现在 VFP 中熟悉的功能时,遇到了一些小小的“困难”。
网络引擎搜索的结果,是大量的简单的示例,即使是 MS 的官方文档。它们仅仅是演示了在数据验证失败后如何以代码实现信息提示,大概就是下面的代码:
*!* This 相当于 VFP 中的 Thisform
This.ErrorProvider.SetError(This.textbox1, "数据验证失败!")因为在 VFP 中习惯了在保存数据前通过检查 ErrorProvider.Count 是否为 0 来确定是否继续保存的动作(如果 >0,则再次闪烁以提醒操作者还有未解决的问题),因此,在 X# 中重现此行为时,遇到了一点点“麻烦”。通过询问 AI,获得了可能是目前为止唯一的解决方案:
This.ErrorProvider.SetError(This.textbox1, "")
This.ErrorProvider.SetError(This.textbox1, "数据验证失败!")说实话,从我的感觉是,很丑!也许,随着我对 .NET 的进一步熟悉,也能像在 VFP 中一样对其进行封装,以优雅的实现自己的目的......