2

我有一个表单,我需要在其中验证名字、中间名、姓氏、emailId、日期、手机号码等文本框。验证应该在用户开始在文本框中输入时进行。如果用户输入数字代替文本和文本代替数字,errorprovider 应该在文本框下显示消息。我了解了隐式验证和显式验证,但我觉得最好使用隐式验证,因为它在用户失去对文本框的关注或转移到另一个文本框时会及时提供错误提供程序。我已经用明确的验证码提出了这种问题,但没有人回复我。所以我很容易获得帮助。在发布这个问题之前,不要认为我没有做足够的研究。

4

3 回答 3

3

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

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

如果通过编程修改或用户交互更改了 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;
   }
}

希望能帮助到你 :)

于 2012-11-22T10:34:23.367 回答
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;
        }
    } 
于 2012-11-22T11:20:26.280 回答
3

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

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

于 2012-11-22T11:30:07.457 回答