我尝试在文本框中使用此自定义方法进行用户输入验证。但我觉得这种方法缺少一些东西。如果验证失败,现在使用不能移动到下一个文本框。这是好事还是坏事?
private void textBox_Validating(object sender, CancelEventArgs e)
{
TextBox currenttb = (TextBox)sender;
if (currenttb.Text == "")
{
MessageBox.Show(string.Format("Empty field {0 }", currenttb.Name.Substring(3)));
e.Cancel = true ;
}
else
{
e.Cancel = false;
}
}
使用表单构造函数中的foreach循环将处理程序添加到文本框中:
foreach(TextBox tb in this.Controls.OfType<TextBox>().Where(x => x.CausesValidation == true))
{
tb.Validating += textBox_Validating;
}
答案 0 :(得分:1)
如果使用Error Provider,如果验证失败,它将显示感叹号
答案 1 :(得分:1)
如果你弹出太多的消息框,我认为这将是一个糟糕的用户体验。可能是您应该考虑使用标签在每个文本框旁边显示错误消息。在你的程序中,如果我将文本框留空,我甚至无法通过单击关闭按钮来关闭窗口。