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