为什么我的标签不显示数字?

时间:2013-12-07 21:36:31

标签: c# winforms label

所以我知道我的计算可能很大。但是,当我尝试计算与其相邻的文本框的输入立方体时,它不会显示数字,但会显示字符串“exp:”。

这种连接不起作用吗?相反,如果它太大,它只显示“EXP:”。

另外,我尝试了反过来但它会显示数字(即使它很大)但不显示“exp”。

for (int i = 0; i < textBoxes.Length; i++)
{
    totalExp += Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1;
    labels[i].Text = "Exp: " + (Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1).ToString("#,###.#####");
}

文本框属性是在我的上一个问题(https://stackoverflow.com/a/20406828/2804613

上设置的

我对标签做了完全相同的事情,因此它们位于文本框的右侧。

2 个答案:

答案 0 :(得分:2)

我尝试使用以下代码重现您的问题:

    double thisExp = Math.Pow(Convert.ToDouble("1.37"), 3.0) + 1;
    // totalExp += thisExp;
    string Text = "Exp: " + thisExp.ToString("#,###.#####");

    Console.WriteLine(Text);

打印

  

Exp:3.57135

您可以尝试here

因此,这不是格式化问题。我怀疑从字符串转换为double,但我们需要更多信息。 特别是区域设置和确切的字符串内容。

第二个想法:你能读回标签文字吗?如果您为文本设置的标签尺寸太窄,则可能只显示前几个字符。

答案 1 :(得分:1)

解释我的评论:

for (int i = 0; i < textBoxes.Length; i++)
{
    var exp = Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1;
    totalExp += exp;
    labels[i].Text = "Exp: " + exp.ToString("#,###.#####");
}

更好的方法是使用String.Format()

for (int i = 0; i < textBoxes.Length; i++)
{
    var exp = Math.Pow(Convert.ToDouble(textBoxes[i].Text), 3.0) + 1;
    totalExp += exp;
    labels[i].Text = String.Format("Exp: {0:#,###.#####}", exp);
}

并确保将标签的AutoSize属性设置为True