【问题标题】:How to multiply the number of two labels in C#如何将C#中两个标签的数量相乘
【发布时间】:2020-10-17 07:45:09
【问题描述】:

所以我有 2 个标签。其中一个是固定数字并且不会更改,但另一个每 5 秒更改一次。现在我想自动将它们相乘并将它们显示在另一个标签中作为结果。

我该怎么办?我做错了什么?

我试过这段代码,但它说“运算符 * 不能应用于字符串和字符串”。

label1.Text = BTC_A.Text * BTCrice_Label.Text;

然后我尝试了

double txt1 = Convert.ToDouble(BTC_A.Text);
            double txt2 = Convert.ToDouble(BTCPrice_Label.Text);

            双倍总和 = txt1 * txt2;

            label1.Text = sum.ToString();

但它说“输入字符串的格式不正确”

【问题讨论】:

  • 如果使用数据绑定会更简单
  • @MickyD 我该怎么做?!
  • label1.Text = double.Parse(BTC_A.Text) * double.Parse(BTCPrice_Label.Text);
  • @Gusman 我试过了,但它说“不能隐式地将双精度转换为字符串”然后我尝试了这个 label1.Text = (double.Parse(BTC_A.Text) * double.Parse(BTCPrice_Label.Text) ).ToString();我得到“输入字符串的格式不正确。”错误
  • “输入字符串格式不正确”表示两个控件之一中的文本不能转换为双精度。这些控件的具体内容是什么?请注意,Convert.ToDouble 对文化敏感,因此根据您当前的文化,它会期望小数点分隔符为“。”或作为','

标签: c# string integer label


【解决方案1】:

一步一步考虑。

您有带有Text 属性的标签。该属性的类型为string。 C# 是一种强类型语言:字符串不能像那样相乘。最后,标签可以为空,或者用户可以输入任何随机字符串。 "foo" * "bar" 的结果是什么?

此外,当您确实有一个 double 作为乘法的结果时,您希望在另一个 label.Text 中向用户显示它。这里有相反的问题:C#/.Net 不会将 double 类型的变量隐式转换为字符串。

所以你必须这样做

  • 检查用户输入的字符串是否真的是一个有效的双精度数
  • 如果是,则将这些字符串转换为 double 并将它们相乘
  • 将结果转换为字符串,并将其分配给标签Text属性
  • 如果字符串不是有效数字,则将标签留空,或显示其他消息

实现这一点的逻辑是这样的:

var validPrice = int.TryParse(BTCPrice_Label.Text, out double price);
var validAmount = int.TryParse(BTCA_Label.Text, out double amount);
if (validPrice && validAmount)
{
    var result = price * amount;
    label1.Text = result.ToString();
}
else
{
    label1.Text = "something is wrong";
}

【讨论】:

    【解决方案2】:

    所以问题是我在数字前面放了一个美元符号 ($)。

    我刚刚删除了这个标志,这就是代码现在的样子:

    double AA;
               if (!double.TryParse(BTC_A.Text, out AA))
               {
                    MessageBox.Show($"Unable to convert the BTC_A \"{BTC_A.Text}\" to a floating point number");
                    return;
               }
               double btcA;
               if (!double.TryParse(BTCPrice_Label.Text, out btcA))
               {
                    MessageBox.Show($"Unable to convert the price \"{BTCPrice_Label.Text}\" to a floating point number");
                    return;
               }
               label1.Text = (AA * btcA).ToString();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      相关资源
      最近更新 更多