当我在TxtAdvance
文本框中输入一个值时,如果该值大于TxtAssessedVal
框中的值,则程序应显示一条错误消息。
private void TxtAdvance_Validating(object sender, System.ComponentModel.CancelEventArgs e)
{
if (float.Parse(TxtAssessedVal.Text) <= float.Parse(TxtAdvance.Text))
{
MessageBox.Show("Advance value shold be less than Assessed value .!",
"Error",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
TxtAdvance.Focus();
return;
}
}
但是当我输入“ 90000
”作为“高级”值并且输入89600
作为“已评估”值时,它没有显示错误。
答案 0 :(得分:0)
90000
比89600
大,因此您所写内容的预期行为是它不应显示错误。您的代码将像这样:if (89600 >= 90000) { MessageBox.Show //etc....
。换句话说,这表示“如果89600大于或等于9000,则显示错误”。显然,89600不大于或等于9000,因此不会显示该消息。
我认为您只是将“大于”与“小于”混淆了。尝试使用<=
而不是>=
:
if (float.Parse(TxtAssessedVal.Text) <= float.Parse(TxtAdvance.Text))
或者,如果您希望使代码的阅读更符合您的要求,请改为舍入文本框:
if (float.Parse(TxtAdvance.Text) >= float.Parse(TxtAssessedVal.Text))
P.S。您的要求还说“如果更高”,但没有提及“或等于”。因此,您可能还需要删除=
,因为在这种情况下,如果两个值均为90000
,则将显示错误。所以实际上也许代码应该是:
if (float.Parse(TxtAdvance.Text) > float.Parse(TxtAssessedVal.Text))
相反。
P.P.S。我建议您阅读文档https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/operators/comparison-operators,并确保您清楚地了解每个操作符的含义。