我想要一个只能获得1-24个数字的文本框。我希望它检查第一个数字,因为它也必须是1或2。如果用户提供任何其他输入,它将在消息框中显示警告。 这是我试过的代码:
private void textBox2_TextChanged(object sender, EventArgs e)
{
int hour;
bool ishourValid = int.TryParse(textBox2.Text, out hour);
// Check the Text value if it's only numbers
if (System.Text.RegularExpressions.Regex.IsMatch(textBox2.Text, "[^0-9]"))
{
// Clear the text box as it wasn't a number
textBox2.Clear();
// Show Warning MesssageBox
MessageBox.Show("Please enter numbers only!");
}
// Check TextBox text length
else if (textBox2.Text.Length >= 2)
{
textBox6.Focus();
}
else if (Hour < 1 && Hour > 24)
{
MessageBox.Show("Please use 24-hour format!");
}
}
一切正常,但此代码无效:
else if (Hour < 1 && Hour > 24)
{
MessageBox.Show("Please use 24-hour format!");
}
请帮帮我。
答案 0 :(得分:1)
在开始时,您尝试从textBox2.Text解析字符串值并将其存储到&#39; hour&#39;。
int hour;
bool ishourValid = int.TryParse(textBox2.Text, out hour);
稍后您正在检查Hour
...
否则如果(小时&lt; 1&amp;&amp; Hour&gt; 24)
{
MessageBox.Show(&#34;请使用24小时格式!&#34;);
}
但你还没有设置Hour
。您设置了hour
。我无法看到Hour
的定义位置;如果你能够编译它必须在某个地方。我的猜测是你的代码没有按预期工作,因为你需要类似的东西:
Hour = hour;
或将TryParse更改为使用小时...
bool ishourValid = int.TryParse(txt, out Hour);
话虽如此,我认为还有一些问题。这可能更适合代码审查堆栈?
答案 1 :(得分:0)
如果你没有把时间大小化,那么代码可能会有效吗?此外,评估似乎正在寻找同时小于1且超过24的答案。
旧:
else if (Hour < 1 && Hour > 24)
新:
else if (hour < 1 || hour > 24)
答案 2 :(得分:0)
您需要||
(OR
)条件而不是AND
条件。将代码更改为如下所示,Hour
在任何时间点的值都不能保持两个边界值。可以说,如果Hour < 1
那么它就不会超过24而且你的条件必然会被评估为假。
else if (Hour < 1 || Hour > 24)
{
MessageBox.Show("Please use 24-hour format!");
}