防止将数字粘贴到.net窗体中的文本框中

时间:2010-09-21 06:51:11

标签: c# .net windows winforms

我已使用按键事件阻止在文本框中键入数字。但是当使用Ctrl + V或通过鼠标粘贴内容时,会在文本框中输入数字。怎么预防这个?除了数字之外,我必须允许粘贴/输入所有文本。

3 个答案:

答案 0 :(得分:3)

使用TextBox.TextChanged事件。然后使用与KeyDown事件中相同的代码。实际上,您不再需要keydown事件

答案 1 :(得分:3)

非常简单的方法是使用TextChanged事件检查文本。如果文本有效,请将其副本存储在字符串变量中。如果它无效,请显示一条消息,然后从变量中恢复文本:

string _latestValidText = string.Empty;
private void TextBox_TextChanged(object sender, EventArgs e)
{
    TextBox target = sender as TextBox;
    if (ContainsNumber(target.Text))
    {
        // display alert and reset text
        MessageBox.Show("The text may not contain any numbers.");
        target.Text = _latestValidText;
    }
    else
    {
        _latestValidText = target.Text;
    }
}
private static bool ContainsNumber(string input)
{
    return Regex.IsMatch(input, @"\d+");
}

这将处理文本中出现的任何数字,无论它们出现在何处或显示多少次。

答案 2 :(得分:-1)

您可以使用JavaScript更改事件(onchange)而不是keydown事件。它只会在用户离开文本框时检查。