验证文本框-比较两个文本框值

时间:2019-05-13 10:22:25

标签: c# winforms validation comparison-operators

当我在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作为“已评估”值时,它没有显示错误。

1 个答案:

答案 0 :(得分:0)

9000089600大,因此您所写内容的预期行为是它不应显示错误。您的代码将像这样: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,并确保您清楚地了解每个操作符的含义。