创建可复用的Windows数据输入控件

ZDNet软件频道 时间:2002-12-17 作者:BUILDER.COM |  我要评论()
本文关键词:
通过使用基本的TextBox或者RichTextBox控件创建继承的数据输入控件,你可以大大增加对用户输入数据的控制。在本文中,我将给出三种使用继承和.NET Framework的能力来保证在用户界面层被捕获数据输入错误的方法。

当糟糕的客户逻辑允许非法数据到达数据库,只是限制它不能进行插入和更新操作时,额外的数据库调用就会产生。如果你开发的系统是在连结环境下给少数用户用的,这不会有什么大问题。但是在一个非连接的多层环境中,并且有很多用户的情况下,这些不必要的调用在资源利用和可伸缩性方面是一笔很大的开销。好的应用程序设计必须一些能降低非法数据被传出表示层的可能性的控件的创建和复用。

微软为ASP.NET提供一组数据验证控件,但是却没有给Windows Form开发人员提供,所以他们必须自己实现。虽然自然的倾向可能是使用控件尽量减少文本的输入,这个很容易,只要多添加一些控件就可以了,但是带来的结果是糟糕的界面。例如,使用一个微调控件输入数量,使用一个日期控件输入日期(而且只能在这里输入日期),这会导致难处理的界面。最终,你的用户总需要某种TextBox控件输入一些文本信息。这一点是.NET Framework中继承的价值体现得很明显的地方。

通过使用基本的TextBox或者RichTextBox控件创建继承的数据输入控件,你可以大大增加对用户输入数据的控制。在本文中,我将给出三种使用继承和.NET Framework的能力来保证在用户界面层被捕获数据输入错误的方法。

数据验证TextBox控件

你可以创建的一个最简单但是最好的控件是数据验证TextBox控件。这个控件有两个主要功能:第一,它在输入数据时检查每一个击键,从而保证输入的数据符合该域的类型。例如,一个输入整数的域保证只能有1~9的数字输入到其中,它将自动地将其它击键丢弃,但是一个允许10进制的域也会允许逗号和一个单一的句点出现。

数据验证TextBox控件的第二个作用是提供复杂的格式化作用,还会给出输入数据是否合法的可视化提示。例如,你可以增加复杂的格式化作用,比如说当一个域失去焦点时为一个数字自动插入逗号,从而使显示更加人性化,然后在编辑或者数字在被传到商业逻辑城被处理之前保存到一个对象或者商业实体时再自动地删除逗号。

我们可以从基类TextBox控件继承得到一个数据验证TextBox控件,该数据验证TextBox控件具有两个显著的特性:首先,你依然可以使用所有的TextBox的功能,所以保证了你的控件更加有用。例如,如果你的用户界面已经使用了一个DataSet控件存储实例数据,并且输入域限制了MaxLength值,然后你就可以将TextBox控件的Length属性设置为与输入域的MaxLength值相等,从而进行更进一步的合法性检查。更重要的是,你为你在每次击键时通过在TextChanged事件中询问键值来检查输入,控件就没有必要采取异常(exception)机制去捕获非法字符。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134