我对下面的代码有疑问。我试图使用int.TryParse
方法来检查用户的输入(如果用户在文本框上放置“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整数已设置在表单的开头下方,以便我可以在整个应用程序中普遍使用它。有人请给我任何关于如何使其工作的提示吗?我可能忽视了一些事情。非常感谢。
答案 0 :(得分: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.");
}
答案 1 :(得分: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(...))
答案 2 :(得分: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的第一次调用会抛出一个Exception,如果它不是一个可解析的数字 - 这就是TryParse的用途,如果无法解析数字,它就会返回false。此外,当您的消息是有效数字时,您的逻辑显示消息,因此如果无法解析该数字,则需要!
来使语句解析为true。
答案 3 :(得分: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 documentation。
答案 4 :(得分: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.");
}
}