如何将C#中的两个标签的数量相乘



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

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

我试过这个代码,但上面写着";运算符*不能应用于字符串和字符串";。

label1.Text=BTC_A.Text*BTCPrice_Label.Text

然后我尝试了

double txt1=Convert.ToDouble(BTC_A.Text(;double txt2=转换为双精度(BTCPrice_Label.Text(;双和=txt1*txt2;label1.Text=总和。ToString((

但是它说";输入字符串的格式不正确";

逐步思考。

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

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

所以你将不得不

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

实现这一目标的逻辑如下:

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";
}

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

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

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();

最新更新