比较两个文本框

时间:2016-01-23 20:28:28

标签: c#

我有3个重要的文本框。一个是道达尔,另外两个是最小和最大的。如果它小于或大于文本中的当前值,我希望最小值和最大值被Total中的值替换。

但我收到错误“输入字符串格式不正确”但我无法弄清楚它有什么问题。

尝试将其更改为TryParse但是它给了我错误,我无法使用“>”对于布尔和布尔。也尝试使用Math.Min,但它给了我一个错误,我不知道如何解决这个问题。

if (Convert.ToDecimal(txtTotal.Text) < Convert.ToDecimal(txtSmallestInvoice.Text))
        {
            txtSmallestInvoice.Text = txtTotal.Text;
        }

if (Convert.ToDecimal(txtTotal.Text) > Convert.ToDecimal(txtLargestInvoice.Text))
        {
            txtLargestInvoice.Text = txtTotal.Text;
        }

2 个答案:

答案 0 :(得分:1)

您是“一体化”的受害者。综合征。没有什么可以在这里获得,而是你失去了一些东西(当然是最小的)因为你将txtTotal字段转换了两次。此外,永远不要使用Convert.XXXX或decimal.Parse()尝试转换数字值的用户输入。始终使用TryParse。

所以:

decimal total;
decimal minimum;
decimal maximum;
if(!decimal.TryParse(txtTotal.Text, out total))
{
    MessageBox.Show("Not a valid total value");
    return;
}

// If the textbox doesn't contain a number then set the
// minimum to the max value for decimals 
// (in this way the total will be always lower
if(!decimal.TryParse(txtSmallestInvoice.Text, out minimum))
    minimum = decimal.MaxValue;

// the same logic for maximum but reversed 
if(!decimal.TryParse(txtLargestInvoice.Text, out maximum))
   maximum = decimal.MinValue;

if(total < minimum)
   txtSmallestInvoice.Text = txtTotal.Text;
if(total > maximum)
   txtLargestInvoice.Text = txtTotal.Text;

答案 1 :(得分:0)

&#34;输入字符串格式不正确&#34;是由于任何文本框中的空值。

一种解决方案是在比较之前检查空值。你可以写

if (txtTotal.Text != "" && txtSmallestInvoice.Text != "" && txtLargestInvoice.Text != "")
{
  if (Convert.ToDecimal(txtTotal.Text) < Convert.ToDecimal(txtSmallestInvoice.Text))
        {
            txtSmallestInvoice.Text = txtTotal.Text;
        }

if (Convert.ToDecimal(txtTotal.Text) > Convert.ToDecimal(txtLargestInvoice.Text))
        {
            txtLargestInvoice.Text = txtTotal.Text;
        }
}