我有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;
}
答案 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;
}
}