应用程序在用户在文本框中输入Letter时崩溃

时间:2018-01-29 21:09:29

标签: c# winforms textbox

我创建了一个猜谜游戏应用程序。当用户输入一封信时,它会崩溃。我希望文本框只有整数。我试图创建一个验证,所以当用户输入一个字母时,它将只显示一个消息整数。如何在程序中添加验证,以便用户只能输入整数?

我尝试使用此代码,但它仍然崩溃:

<select>
  <option class="in_stock">Size 2 - In Stock</option>
  <option class="out_of_stock">Size 5 - Out Of Stock</option>
</select>
double input = Convert.ToInt32(txtInput.Text);

if (Double.TryParse(txtInput.Text, out input))
{
    txtInput.Text = Convert.ToString(input);
}
else 
{
    MessageBox.Show("Please enter a valid number.");
}

2 个答案:

答案 0 :(得分:0)

您可以使用NumericUpDown控件。

这个控件的优点是它不仅有一个文本框,而且只能输入数字,右边有两个小按钮可以增加1或减少1(至少默认情况下) )。

此外,可以设置更多属性。

可以找到官方文档here

以下是它的外观示例:

enter image description here

codeproject,可以找到扩展版本。

答案 1 :(得分:0)

除了NumericUpDown的答案。 只需添加一些东西。通过一些小的调整,您的代码将起作用。

private void Clickbutton_click(object sender, EventArgs e)
{
        //// Convert.ToInt32 throws an exception if it fails 
        //// to parse the string to an integer
        //// So you don't want to parse the input directly
        ////double input = Convert.ToInt32(txtInput.Text);


        // Your second attempt is the goal
        double input;
        if (!Double.TryParse(txtInput.Text, out input))
        {
            MessageBox.Show("Please enter a valid number.");
            return; //// We are done. Nothing more to do here
        }

        txtInput.Text = input.ToString();


        if ( input == guess)
        {
            lblMessage.Text = "You Are Corrrect, You Win" + " "+
                " \r\n Random Number was =  " + Convert.ToString(guess);
        }
        else if (input > guess)
        {
            lblMessage.Text = "Number is too High, Try Again";
            txtInput.Clear();

        }
        else if (input < guess)
        {
            lblMessage.Text = "Number is too Low, Try Again";
            txtInput.Clear();
        }
   }