-1

我对下面的代码有疑问。我正在尝试使用一种int.TryParse方法来检查用户的输入(如果用户在 TextBox 上放置“abc”,它应该显示一个错误,告诉用户,这是错误的输入,并且他们应该输入一个整数。)。我想知道为什么我的代码不想工作。这是我所拥有的:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
     // Get the user input.
     NumberOfDays = int.Parse(DaysInHospitalChargesTextBox.Text);
     if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
     {
         MessageBox.Show("Please enter a whole number.");
     }
}

在代码视图中没有错误,但是当我运行应用程序对其进行测试时,它会回到第 4 行并突出显示它,但我无法弄清楚。请记住,NumberOfDays 整数已经设置在表单开头的下方,以便我可以在整个应用程序中普遍使用它。有人能给我一些关于如何使它工作的提示吗?我可能忽略了一些东西。谢谢一堆。

4

5 回答 5

1
if (int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
        {
            MessageBox.Show("Please enter a whole number.");
        }

如果解析成功,则执行此操作,然后显示此消息,您应该改为执行此操作

if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
        {
            MessageBox.Show("Please enter a whole number.");
        }
于 2013-03-17T17:41:25.730 回答
0

int.TryParse(Something, out value) 尝试解析“Something”的值并将值设置为 out(如果可以的话)。如果可以,则 int.TryParse 返回 true(如果不可以,则返回 false。)

因此,对于您的示例,您应该做的是:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
     int NumberOfDays; //Create the variable
     //try to parse DaysInHosputalChargesTextBox.Text
     if (!(int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))) 
     {
         // "!" means the parsing was not ok. So the user should reenter the number     
         MessageBox.Show("Please enter a whole number.");
     }
     else
     {
         //some code to do if the parsing was successful. 
     }
}

有关详细信息,请参阅msdn 文档

于 2013-03-17T17:54:28.027 回答
0

int.TryParse当无法解析时返回 false,因此您必须!输入您的条件:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    // Get the user input.
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}

为什么使用int.Parse然后int.TryParse?使用其中之一,而不是两者。

您还必须有一个名为的变量,该变量NumberOfDays必须是int类型。如果类中没有这样的变量,则在if语句之前添加一个:

int NumberOfDays;
if(!int.TryParse(...))
于 2013-03-17T17:40:51.153 回答
0

我认为这就是你想要的:

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    // Get the user input.
    int NumberOfDays;
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}

如果它不是可解析的数字,您对 int.Parse 的第一次调用将引发异常——这就是 TryParse 的用途,如果它无法解析数字,它只会返回 false。此外,当消息是有效数字时,您的逻辑会显示消息,因此!如果无法解析数字,您需要在其中使语句解析为 true。

于 2013-03-17T17:40:58.097 回答
0

看看int.TryParse是如何使用的

private void CalcStayChargesButton_Click(object sender, EventArgs e)
{
    int NumberOfDays;
    if (!int.TryParse(DaysInHospitalChargesTextBox.Text, out NumberOfDays))
    {
        MessageBox.Show("Please enter a whole number.");
    }
}
于 2013-03-17T18:00:04.713 回答