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

时间:2016-01-01 20:01:58

标签: c# textbox numbers

我想要一个只能获得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!");
}

请帮帮我。

3 个答案:

答案 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!");
}