开发一个Windows应用程序,肯定少不了控件的输入验证,而增加输入验证的方法不计其数,这里介绍一种使用Sophus的拦截功能来为你的 TextBox 控件很干净地增加输入验证的方法。“很干净”这里指的意思是可以透明的增加和删除输入验证而不用考虑任何用户逻辑代码。
现在我们有一个 TextBox 名为 textBox1 ,还有一个Button 叫 button1
这个button1有一个click事件,代码如下




如果我们要给 textBox1 控件增加一个输入验证,而不改动 button1 的代码要怎么办?
我们可以看一下 textBox1.Text这个属性,这个是一个virtual的属性,就意味着可以被拦截,好了,大致的解决办法出来了,我们是用 Sophus提供的 IInterceptor接口实现一个拦截器接口代码如下

















这个拦截器具体要拦截什么,接下来我们定义一个Contract,里面就包含了拦截的具体对象和方法等详细信息,代码如下:



然后呢就是创建这个动态代理的的类型



看,当textBox1中输入的不是数字时,动态拦截器就生效了。
从这里下载Sophus免费版本: http://research.grapecity.com.cn/cs/files/7/sophus/default.aspx
Sophus论坛: http://research.grapecity.com.cn/cs/forums/14/ShowForum.aspx