我有一个TextBox控件。我已经设置了TextBox的KeyPress
事件,因此只允许用户输入数字:
private void txtbxRecurEveryXWeeks_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
但除此之外,我不希望用户将TexBot的值设置为零“0”。但他们仍然应该被允许输入“10”或“3400”作为价值。我怎样才能做到这一点?
答案 0 :(得分:2)
最好忽略按键事件并处理丢失的焦点事件,并在用户完成输入时检查并确保值不是0
。
编辑:有人指出,用户可以键入" 000"失去焦点会导致失败。您可以检查并确认文本框中有值并将其解析为int
以确认它不是0.
private void txtbxRecurEveryXWeeks_LostFocus(object sender, EventArgs e)
{
int value;
if(!string.IsNullOrWhitespace(txtbxRecurEveryXWeeks.Text)
&& int.TryParse(txtbxRecurEveryXWeeks.Text, out value)
&& value > 0)
{
//Do something like clear the textbox value
}
}
答案 1 :(得分:0)
假设您使用winforms,请考虑使用NumericUpDown
控件输入数字。它具有Minimum
属性,您可以将其设置为1
以避免零输入。
答案 2 :(得分:0)
使用最小值= 1的NumericUpDown和隐藏的向上和向下按钮。
numericUpDown1.Minimum = 1;
numericUpDown1.Controls[0].Hide();