防止在文本框中输入字符后继续输入

本文关键字:输入 字符 继续 文本 | 更新日期: 2023-09-27 18:16:33

我有一个文本框,用户应该在其中键入价格。如果价格以0开头,我需要防止继续输入。例如用户不能输入"000"或"00009"。

我在KeyPress上尝试了这个,但是没有!

if (txt.Text.StartsWith("0"))
       return; Or e.Handeled = true;

防止在文本框中输入字符后继续输入

try this:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    //only allow digit and (.) and backspace
    if ((e.KeyChar < '0' || e.KeyChar > '9') && e.KeyChar != ''b' && e.KeyChar != '.')
    {
        e.Handled = true;
    }
    var txt = sender as TextBox;
    //only allow one dot
    if (txt.Text.Contains('.') && e.KeyChar == (int)'.')
    {
        e.Handled = true;
    }
    //if 0, only allow 0.xxxx
    if (txt.Text.StartsWith("0")
        && !txt.Text.StartsWith("0.")
        && e.KeyChar != ''b'
        && e.KeyChar != (int)'.')
    {
        e.Handled = true;
    }
}

您可以使用TextChanged -事件。

private void textBox1_TextChanged(object sender, EventArgs e)
{
    if (this.textBox1.Text == "0") this.textBox1.Text = "";
}

这将只工作,如果TextBox是空的启动

我自己解决了:

private void txtPrice_KeyPress(object sender, KeyPressEventArgs e)
{
    if (txtPrice.Text.StartsWith("0") && !char.IsControl(e.KeyChar))
    {
        e.Handled = true;
        return;
    }
}