Windows窗体中的TextBox验证
本文关键字:TextBox 验证 窗体 Windows | 更新日期: 2023-09-27 17:59:47
我有一些代码是为了检查TextBox中的某些字符,尽管出于某种原因,我在代码的"KeyChar"answers"Handled"部分遇到了问题:
private void textBox5_Validating(object sender, CancelEventArgs e)
{
string allowedCharacterSet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.'b'n";
if (allowedCharacterSet.Contains(e.KeyChar.ToString()))
{
if (e.KeyChar.ToString() == "."
&& textBox5.Text.Contains("."))
{
e.Handled = true;
}
}
else
{
e.Handled = true;
}
}
Error 2 'System.ComponentModel.CancelEventArgs' does not contain a definition for 'KeyChar' and no extension method 'KeyChar' accepting a first argument of type 'System.ComponentModel.CancelEventArgs' could be found (are you missing a using directive or an assembly reference?) D:'test'Form1.cs 602 48 App
正如错误所说,CancelEventArgs
中没有KeyChar
属性。
您必须切换到文本框的KeyPress
事件(其事件参数中具有KeyChar
属性),或者在Validating
事件中将字符串视为一个整体(而不是一次一个字符)
改为使用正则表达式怎么样?
private void TextBox5_Validating(object sender, System.EventArgs e)
{
String AllowedChars = @"^a-zA-Z0-9.$";
if(Regex.IsMatch(TextBox5.Text, AllowedChars))
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}
或者类似的东西。。。。
尝试使用KeyPressEventArgs e
而不是CancelEventArgs e
http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.aspx
请尝试KeyPress
事件。这可以防止用户键入您不想要的信件(通过设置e.Handled = true
)。您仍然需要使用"验证"来确保他们没有从剪贴板粘贴一些坏数据。