C# 粘贴文本通过验证
C# Paste text gets through validation
我需要验证简单的文本框以防止用户输入任何特殊字符 ("!@#$%* \t")。它有效,但用户可以通过右键单击并粘贴将值粘贴到文本框中来绕过此验证。有没有办法验证粘贴的值?
private void NoSpecialCharacter(object sender, KeyPressEventArgs e)
{
var regex = new Regex(@"[^a-zA-Z0-9\s]");
if (regex.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}
使用 TextChanged
TextBox
控件的事件 - 当您在 TextBox
中输入任何值时它起作用 - 粘贴或输入 - 无关紧要。
将您的验证作为带有 bool 结果的函数,并在每个 TextChanged
事件上检查它,就像这样
private void textBox_TextChanged(object sender, EventArgs e)
{
if (CheckStrng(textBox.Text))
// Validated - do what you needed
else
// Not Validated
}
您可以使用正则表达式创建您自己的方法,而不是这个 LINQ
private bool CheckStrng(string str)
{
return str.Length == str.Count(x => Char.IsLetterOrDigit(x)) + str.Count(x => Char.IsWhiteSpace(x));
}
我需要验证简单的文本框以防止用户输入任何特殊字符 ("!@#$%* \t")。它有效,但用户可以通过右键单击并粘贴将值粘贴到文本框中来绕过此验证。有没有办法验证粘贴的值?
private void NoSpecialCharacter(object sender, KeyPressEventArgs e)
{
var regex = new Regex(@"[^a-zA-Z0-9\s]");
if (regex.IsMatch(e.KeyChar.ToString()))
{
e.Handled = true;
}
}
使用 TextChanged
TextBox
控件的事件 - 当您在 TextBox
中输入任何值时它起作用 - 粘贴或输入 - 无关紧要。
将您的验证作为带有 bool 结果的函数,并在每个 TextChanged
事件上检查它,就像这样
private void textBox_TextChanged(object sender, EventArgs e)
{
if (CheckStrng(textBox.Text))
// Validated - do what you needed
else
// Not Validated
}
您可以使用正则表达式创建您自己的方法,而不是这个 LINQ
private bool CheckStrng(string str)
{
return str.Length == str.Count(x => Char.IsLetterOrDigit(x)) + str.Count(x => Char.IsWhiteSpace(x));
}