防止文本框值更改

本文关键字:文本 | 更新日期: 2023-09-27 18:13:59

如何防止文本框值在按下某个键后发生变化?例如,我试图防止数字被输入,如果一个数字输入一个消息框显示,但数字仍在打印。我怎样才能拿到没有打印的号码呢?

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

提前感谢,Ari

防止文本框值更改

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);
    }
}

示例:

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

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

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

/欢呼Magnus

您可以使用文本框的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);
}