自定义了一个窗体控件验证的类
/// <summary>
/// 窗体控件的验证
/// </summary>
public class WinFormValidating
{
/// <summary>
/// 路径验证
/// </summary>
/// <returns></returns>
public static bool validtePath(Control ctrl,ErrorProvider ep)
{
string pattern = @"^[a-zA-Z]:(((\\(?! )[^/:*?<>\""|\\]+)+\\?)|(\\)?)\s*$";
Regex myRegex = new Regex(pattern);
bool isR = myRegex.IsMatch(ctrl.Text);
if (!isR)
ep.SetError(ctrl, "所输入的路径不合法");
return isR;
}
/// <summary>
/// 验证是否为空
/// </summary>
/// <param name="ctrl"></param>
/// <param name="ep"></param>
/// <returns></returns>
public static bool validateNull(Control ctrl, ErrorProvider ep)
{
string content = ctrl.Text;
if ((content == null) || content.Trim().Length == 0)
{
ep.SetError(ctrl, "不能为空");
return false;
}
return true;
}
/// <summary>
/// 验证窗体所有控件
/// </summary>
/// <param name="f1"></param>
public static bool validateAll(Form f1)
{
//有一个控件没通过验证,返回false
bool isR = true;
foreach (Control ctrl in f1.Controls)
{
ctrl.Focus();
bool tempB= f1.Validate();
if (!tempB)
isR = tempB;
}
return isR;
}
/// <summary>
/// 验证整数
/// </summary>
/// <param name="ctrl"></param>
/// <param name="ep"></param>
/// <returns></returns>
public static bool validateInteger(Control ctrl, ErrorProvider ep)
{
string context = ctrl.Text;
string pattern = @"^([0-9]{1,})$";
Regex myRegex = new Regex(pattern);
bool isR = myRegex.IsMatch(context);
if (!isR)
ep.SetError(ctrl, "所输入的不是有效的整数");
return isR;
}
/// <summary>
/// 验证正浮点数
/// </summary>
/// <param name="?"></param>
/// <param name="ep"></param>
/// <returns></returns>
public static bool validatePositiveFloat(Control ctrl,ErrorProvider ep)
{
string context = ctrl.Text;
string pattern = @"^[1-9]d*.d*|0.d*[1-9]d*$";
Regex myRegex = new Regex(pattern);
bool isR = myRegex.IsMatch(context);
if (!isR)
ep.SetError(ctrl, "所输入的不是有效的整数");
return isR;
}
}
需要验证的文本框的验证事件示例如下:
private void txtOutPath_Validating(object sender, CancelEventArgs e)
{
bool bt = WinFormValidating.validtePath(txtOutPath,errorProvider1);
if (!bt)
e.Cancel = true;
}