输入字符时,阻止继续在TextBox中键入内容

时间:2016-11-07 07:50:40

标签: c# winforms

我有一个文本框,用户应在其中键入价格。 如果价格从0开始,我需要阻止继续输入。 例如,用户不能键入“000”或“00009”。

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

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

3 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:0)

您可以使用TextChanged - 事件。​​

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

只有TextBox在启动时为空时才会有效。

答案 2 :(得分:0)

我自己解决了:

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