众所周知,在ASP.NET中有一套对诸如文本框,下拉框等控件的值进行验证的工具。但不知道为什么winform中未提供这样的工具,所以这里用代码实现类型的功能,主要是判断文本框,下拉框中值是否为空. 步骤如下:
1.在需要验证的控件旁添加一个红心的标签,该标签主要用于显示,提示用户其旁边的控件值的值不能为空,无任何代码。
2.为所有需要验证控件的accessibleName属性赋初值,主要用于当该控件值为空时显示给用户什么样的值.形式如" n[来源单位]",如果控件值为空,则弹出"[来源单位]值不能为空",n是个标志,值不能为空在代码中添加
3.假如调用的方法为IsNull(this.Controls),参数为本窗体的所有控件集合
4.IsNull方法代码如下:

/**//// <summary>
/// 判断控件值是否为空
/// </summary>
/// <param name="cts">控件容器</param>
/// <returns>有控件的值为空则返回false,否则返回true</returns>
public bool IsNull(Control.ControlCollection cts)

...{
//标志位
String msg, flag;

//循环检测控件
foreach (Control ct in cts)

...{
//如果控件的AccessibleName值不为空
if (ct.AccessibleName != null && !(ct.AccessibleName.Trim().Equals("")))

...{
flag = ct.AccessibleName.ToUpper().Trim();

//如果设置的值第一个字符为n,则将其后面的字符提出来,用于提示用户
if (flag.Substring(0, 1).Equals("N"))

...{
//提示字符串
msg = flag.Length > 1 ? flag.Substring(1) + " 不能为空 !" : "";

//如果是文本框
if (ct is TextBox)

...{
//如果内容为空
if (((TextBox)ct).Text == null || ((TextBox)ct).Text.Trim().Equals(""))

...{
ct.Focus(); //使其获得焦点
MessageBox.Show(msg, FormMessage.Alert, MessageBoxButtons.OK); //提示用户不可为空
return false;

}
}

//如果是下拉框
if (ct is ComboBox)

...{
//判断选中值是否为空
if (((ComboBox)ct).SelectedValue == null || ((ComboBox)ct).SelectedValue.Equals(""))

...{
ct.Focus(); //获得焦点
MessageBox.Show(msg, FormMessage.Alert, MessageBoxButtons.OK); //提示用户
return false;

}
}

//添加其它需验证的控件

}

}

//如果控件为GroupBox容器
if (ct is GroupBox)

...{
//循环检测GroupBox容器中的所有控件
foreach (Control ct1 in ct.Controls)

...{

if (ct1.AccessibleName != null && !(ct1.AccessibleName.Trim().Equals("")))

...{
flag = ct1.AccessibleName.ToUpper().Trim();
//如果设置的值第一个字符为N,则将其后面的字符提出来,用于提示用户,容器控件中的控件AccessibleName属性头字符设为大N
if (flag.Substring(0, 1).Equals("N"))

...{
msg = flag.Length > 1 ? flag.Substring(1) + " 不能为空 !" : "";
//如果是文本框
if (ct1 is TextBox)

...{
//如果内容为空
if (((TextBox)ct1).Text == null || ((TextBox)ct1).Text.Trim().Equals(""))

...{
ct1.Focus(); //获得焦点
MessageBox.Show(msg, FormMessage.Alert, MessageBoxButtons.OK); //提示用户不可为空
return false;

}
}
//如果是下拉框
if (ct1 is ComboBox)

...{
//判断选中值是否为空
if (((ComboBox)ct1).SelectedValue == null || ((ComboBox)ct1).SelectedValue.Equals(""))

...{
ct1.Focus(); //获得焦点
MessageBox.Show(msg, FormMessage.Alert, MessageBoxButtons.OK);//提示用户不可为空
return false;

}
}

//添加其它需验证的控件
}
}
}

}
//添加其它需验证的容器控件
}
return true;//所有控件都有值
}
QQ:25717594 E-MAIL:yiai027@163.com