我已经完成了这个问题(使用替代方法)。但仍然不知道为什么以下方法不起作用。请帮忙
目标:从文本框离开时 检查它是否只包含数字 - 然后允许离开。 如果没有显示错误提供程序。 检查字符串长度是否不超过7而不是0 - 然后允许离开。 如果没有显示错误提供者。
下面给出了似乎不起作用的代码! :
private void textBox24_Validating(object sender, CancelEventArgs e)
{
bool result = true;
foreach (char y in textBox24.Text)
{
while (y < '0' || y > '9')
result = false;
}
if (result == false)
{
errorProvider4.SetError(textBox24, "Enter digits only");
textBox24.Focus();
}
else if (textBox24.Text.Length == 0)
{
errorProvider4.SetError(textBox24, "Enter the value");
textBox24.Focus();
}
else if (textBox24.Text.Length > 7)
{
errorProvider4.SetError(textBox24, "Maximum length is 7 digits");
textBox24.Focus();
}
else
errorProvider4.Clear();
}
此代码存在问题:
当我输入数字以外的输入时,它会卡住。 可能这不是一个大问题。无论如何帮助我。
我正在使用的代码:
private void textBox24_Validating(object sender, CancelEventArgs e)
{
int check = 123;
bool result = int.TryParse(textBox24.Text, out check);
if (result == false)
{
errorProvider4.SetError(textBox24, "Only digits are allowed");
textBox24.Focus();
}
else if (textBox24.Text.Length > 7)
{
errorProvider4.SetError(textBox6, "Invalid value");
textBox24.Focus();
}
else
errorProvider4.Clear();
}
答案 0 :(得分:0)
在while循环中你有条件如果为true你将结果设置为true但循环运行永远因为条件再次为真。
foreach (char y in textBox24.Text)
{
while (condition) // this is run forever if true
result = false;
}
如果属实,请使用break;
foreach (char y in textBox24.Text)
{
while (condition){
result = false;
break;
}
}
更多建议..
MaxLength
的属性的TextBox控件,您可以将其设置为7以限制用户输入最多7个字符int.TryParse
方法。如果带小数点的输入将通过验证。if (textBox1.Text.ToCharArray().Any(c=>!Char.IsDigit(c)))
e.Cancel = true;