使用TextBox_Validating事件进行用户输入验证

时间:2014-06-19 08:52:39

标签: c# .net winforms validation validating

我尝试在文本框中使用此自定义方法进行用户输入验证。但是我看到这里遗漏的东西,因为现在我无法移动(聚焦)到表单中的下一个文本框!

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 = false;
    }

    else
    {
        e.Cancel = true;
    }
}

使用表单构造函数中的foreach循环将处理程序添加到文本框中:

foreach(TextBox tb in this.Controls.OfType<TextBox>().Where(x => x.CausesValidation == true))
{
    tb.Validating += textBox_Validating;
}

1 个答案:

答案 0 :(得分:1)

在这里回答了它失去焦点的预期行为C# Validating input for textbox on winforms: -

  

描述

     

有许多方法可以验证TextBox。你可以在每一个上做到这一点   按键,稍后或验证事件。

     

如果TextBox失去焦点,则会触发验证事件   示例单击其他Control。如果你的设置e.Cancel =真的那么   TextBox不会失去焦点。

     

MSDN - Control.Validating事件使用时更改焦点   键盘(TAB,SHIFT + TAB等),通过调用Select或   SelectNextControl方法,或者通过设置   ContainerControl.ActiveControl属性为当前表单,焦点   事件按以下顺序发生

     

输入

     

的GotFocus

     

离开

     

验证

     

验证

     

引发LostFocus

     

使用鼠标或调用Focus更改焦点时   方法,焦点事件按以下顺序发生:

     

输入

     

的GotFocus

     

引发LostFocus

     

离开

     

验证

     

验证