防止文本框值发生变化

时间:2011-11-09 05:56:01

标签: c# textbox

如何在某次按键后阻止文本框值的更改?例如,我正在尝试阻止输入数字,如果输入了数字,则会显示一个消息框,但该数字仍在打印中。我怎样才能得到它而不打印数字?

private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (e.KeyChar == '1')
    {
        MessageBox.Show("Only letters please");
    }
}

提前致谢, ARI

4 个答案:

答案 0 :(得分:2)

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (Regex.IsMatch(textBox1.Text, "[0-9]"))
    {
        MessageBox.Show("Only letters please");
        textBox1.Text = Regex.Replace(textBox1.Text, "[0-9]", String.Empty);
    }
}

答案 1 :(得分:1)

以下是样本:

private void textBox_KeyPress(object sender, KeyPressEventArgs e)
{
    if (char.IsDigit(e.KeyChar))
    {
        e.Handled = true;
    }
}

答案 2 :(得分:0)

首先,我建议您在每次按下某个键时决定让客户端执行服务器请求。 或者这可能是客户端验证?如果您想验证每个字母,这是一个更好的选择。 如果是这样的话...这里有一些可以使用的脚本(不是我的...只是谷歌搜索): http://www.java2s.com/Code/JavaScript/Form-Control/AllowingOnlyNumbersintoaTextBox.htm http://justins-fat-tire.blogspot.com/2007/09/javascript-numeric-only-text-box.html

一个好的候选解决方案可能是您在提交时验证了这一点。然后,最小化服务器请求的数量。

/干杯马格努斯

答案 3 :(得分:0)

您可以使用文本框的KeyPress事件并仅使用字母

void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
     //allow backspace in case to remove some
     e.Handled = !(char.IsLetter(e.KeyChar) || e.KeyChar == (char)Keys.Back);
}