WEB开发网
开发学院软件开发C语言 Effective C# 原则39:使用.Net验证 阅读

Effective C# 原则39:使用.Net验证

 2009-02-19 08:15:40 来源:WEB开发网   
核心提示: (((s*d{3}s*))|(d{3}))-?这和区号匹配,它充许(XXX)或者XXX的形式,Effective C# 原则39:使用.Net验证(3),其中XXX是三个数字,任何在数字周围的空白字符是充许的,然后强制验证它们,下面两个常规方法显示了如何正确的完成任务,最后两个字符,-和?

(((s*d{3}s*))|(d{3}))-?

这和区号匹配,它充许(XXX)或者XXX的形式,其中XXX是三个数字。任何在数字周围的空白字符是充许的。最后两个字符,-和?,是许可但不要求一个横线。

剩下的部份用于匹配电话的XXX-XXXX部份。s匹配任意的空白,d{3}匹配三个数字,s*-s*匹配一个围绕在数字边上的空白字符。最后,d{4}精确匹配4个数字。

windows验证工作方法小有不同,你没有预先的验证分析。相反,你要写一个事件句柄到System.Windows.Forms.Control.Validating事件上,或者,如果你创建了你自己的控件,重载OnValidating方法(参见原则35)。下面是一个标准的方法:

private void textBoxName_Validating( object sender,
 System.ComponentModel.CancelEventArgs e )
{
 string error = null;
 // Perform your test
 if ( textBoxName.Text.Length == 0 )
 {
  // If the test fails, set the error string
  // and cancel the validation event.
  error = "Please enter a name";
  e.Cancel = true;
 }
 // Update the state of an error provider with
 // the correct error text. Set to null for no
 // error.
 this.errorProviderAll.SetError( textBoxName, error );
}

你有几个小工作要完成,以确保没有不合法的输入愉愉的混过去了。每一个控件包含一个CausesValidation属性,这个属性决定这个控件是否参与验证。一般情况,你应该让所有控件的这一属性为真,除非是Cancel按钮。如果你忘记了,用户还必须输出正确的值以后才能取消对话框。第二个小任务是添加OK句柄来强制验证所有的控件。验证只有在用户访问和离开控件时触发。如果用户打开了一个窗口,然后马上点OK,你的所有验证代码都不会执行。为了修正这个,你要添加OK按钮句柄,来访问所有的控件,然后强制验证它们。下面两个常规方法显示了如何正确的完成任务。递归方法处理控件以及它所包含的控件:Tab页面,控件组以及控件面板:

上一页  1 2 3 4  下一页

Tags:Effective 原则 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接