【问题标题】:C# Paste text gets through validationC#粘贴文本通过验证
【发布时间】:2019-03-17 07:37:23
【问题描述】:

我需要验证简单的文本框以防止用户输入任何特殊字符(“!@#$%* \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 或类似的吗?
  • 对于其他事件,正则表达式将不起作用。

标签: c# regex validation events textbox


【解决方案1】:

使用TextBox 控件的TextChanged 事件-当您在TextBox 中输入任何值时它会起作用-粘贴或输入-没关系。

将您的验证作为具有布尔结果的函数,并在每个TextChanged 事件上检查它

private void textBox_TextChanged(object sender, EventArgs e)
{
    if (CheckStrng(textBox.Text))
        // Validated - do what you needed
    else
        // Not Validated 
}

您可以使用正则表达式创建自己的方法

private bool CheckStrng(string str)
    {
     return str.Length == str.Count(x => Char.IsLetterOrDigit(x)) + str.Count(x => Char.IsWhiteSpace(x));
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 2012-11-11
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2021-08-24
    • 2014-05-09
    相关资源
    最近更新 更多