我有一个文本框,用户应在其中键入价格。 如果价格从0开始,我需要阻止继续输入。 例如,用户不能键入“000”或“00009”。
我在KeyPress上尝试了这个,但没有!
if (txt.Text.StartsWith("0"))
return; Or e.Handeled = true;
答案 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;
}
}