如何验证C#.net winforms中的文本框

时间:2012-11-22 10:11:28

标签: winforms c#-4.0 textbox validation errorprovider

我有一个表单,我需要验证文本框,如Firstname,Middlename,Lastname,emailId,date,mobilenumber。当用户开始在文本框中键入时,应该进行验证。如果用户输入数字代替文本和文本代替数字,则errorprovider应在文本框下显示消息。我了解了隐式验证和显式验证,但我觉得最好只使用隐式验证,因为当用户失去对文本框的关注时,或者如果他转移到另一个文本框时,它的准时错误提供程序。我用一个明确的验证码提出了这个问题,但没有人回复我。所以我很容易获得帮助。在发布这个问题之前,不要以为我没有做足够的研究。

3 个答案:

答案 0 :(得分:3)

您应该查看文本框中的TextChanged事件。

http://msdn.microsoft.com/en-us/library/system.windows.forms.control.textchanged.aspx

  

如果通过a更改Text属性,则会引发此事件   程序化修改或用户交互。

我会做这样的事情

private void TextBoxExample_TextChanged(object sender, EventArgs e)
{
   TextBox box = sender as TextBox;

   if (box.Text.Contains("Example"))
   {
      LabelError.Text = "Error";
   }
   else
   {
      LabelError.Text = string.Empty;
   }
}

希望有所帮助:)

答案 1 :(得分:3)

您还可以使用keyPressEvent避免在文本框中输入数值 它不允许文本框中的数字字符

private void textboxName_KeyPress(object sender, KeyPressEventArgs e)
    {
        //not allowing the non character values
        if (!char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar) && !(e.KeyChar == (char)Keys.Back) && !(e.KeyChar == (char)Keys.Left) && !(e.KeyChar == (char)Keys.Right) && !(e.KeyChar == (char)Keys.Space) && !char.IsPunctuation(e.KeyChar))
        {
            e.Handled = true;
        }
    } 

答案 2 :(得分:3)

如果您要进行非常具体的验证,Marc的答案是正确的。但是,如果你只确保“输入数字而不是字母”或“输入字母而不是数字”的东西,MaskedTextBox可以比你做得更好(用户无法回答不正确的数据,你仍然可以警告他们通过处理MaskInputRejected事件)

http://msdn.microsoft.com/en-us/library/kkx4h3az(v=vs.100).aspx