Effective C# 原则39:使用.Net验证
2009-02-19 08:15:40 来源:WEB开发网private void buttonOK_Click( object sender,
System.EventArgs e )
{
// Validate everyone:
// Here, this.DialogResult will be set to
// DialogResult.OK
ValidateAllChildren( this );
}
private void ValidateAllChildren( Control parent )
{
// If validation already failed, stop checking.
if( this.DialogResult == DialogResult.None )
return;
// For every control
foreach( Control c in parent.Controls )
{
// Give it focus
c.Focus( );
// Try and validate:
if (!this.Validate( ))
{
// when invalid, don't let the dialog close:
this.DialogResult = DialogResult.None;
return;
}
// Validate children
ValidateAllChildren( c );
}
}
这些代码可以处理大多数情况。一个特殊的快捷应用就是DataGrid/DataSet的组合。在设计时指定ErrorProvider的DataSource以及DataMember属性:
ErrProvider.DataSource = myDataSet;
ErrProvider.DataMember = "Table1";
或者在运行时,调用BindToDataAndErrors 方法来同时设置:
ErrProvider.BindToDataAndErrors( myDataSet, "Table1" );
错误会在设置DataRow.RowError 属性以及调用DataRow.SetColumnError 方法时显示特殊的错误。ErrorProvider 会在DataGrid的原始的行上的特殊单元格里显示红色的警告图标。
大概的了解(whirlwind tour)了一下.net框架里的控件验证,这可能对你很有帮助,在很多应用程序中,你都可以创建出你所须要的高效验证。用户的输入不能完全信任:用户可能会出现错误,而且有时会有一些恶意的用户试图破坏你的应用程序。通过.Net框架已经提供的服务,你可以减少你自己的代码编写工作。验证所有用户的输入,但要使用已经提供了的高效工具。
更多精彩
赞助商链接