如何设置最大和最小数字可以在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!");
}

请帮帮我。

如何设置最大和最小数字可以在C#的TextBox中输入

一开始,您尝试解析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)