如何设置最大和最小数字可以在C#的TextBox中输入
本文关键字:输入 TextBox 数字 小数 何设置 设置 | 更新日期: 2023-09-27 18:28:36
我想要一个只能得到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!");
}
请帮帮我。
一开始,您尝试解析textBox2.Text中的字符串值,并将其存储到'hour'中。
int hour;
bool ishourValid = int.TryParse(textBox2.Text, out hour);
稍后您将检查Hour
。。。否则如果(小时<1&小时>24){MessageBox.Show("请使用24小时格式!");}
但您从未设置过Hour
。您设置了hour
。我看不出Hour
是在哪里定义的;如果你能编译,它一定在某个地方。我的猜测是,你的代码没有按预期工作,因为你需要这样的东西:
Hour = hour;
或者将TryParse更改为使用Hour。。。
bool ishourValid = int.TryParse(txt, out Hour);
话虽如此,我认为没有什么问题了。这可能更适合代码审查堆栈?
您需要||
(OR
)条件而不是AND
条件。将代码更改为如下所示,否则Hour
在任何时间点的值都不能同时包含这两个边界值。意思是说,如果Hour < 1
,那么它不可能大于24,并且您的条件必然被评估为false。
else if (Hour < 1 || Hour > 24)
{
MessageBox.Show("Please use 24-hour format!");
}
如果不大写hour,代码可能会工作吗?此外,评估似乎在寻找一个同时小于1和大于24的答案。
旧:else if (Hour < 1 && Hour > 24)
新增:else if (hour < 1 || hour > 24)