为什么我的C#标签文本值不会更新?

时间:2013-04-01 06:57:19

标签: c# winforms visual-studio-2012

我有一个c#程序设置,如果选中了复选框,它应该接受数量输入。然后,它将数量乘以价格,并使用总成本更新相应的标签。

但是,当我运行程序时,它不会更新标签。我运行了调试器,系统中标签的.text值是正确的,但它仍然没有出现在实际的表单上。

Visual Studio中是否存在阻止更改呈现的标签属性?

这是负责更新label.Text值

的代码段
 if (chkSesame.Checked)
    {
        intSesameQty = Convert.ToInt32(txtSesameQty.Text);
        decSesameTotal = intSesameQty * decBAGEL_PRICE;
        lblSesameSeedTotal.Text = decSesameTotal.ToString("c");
    }

1 个答案:

答案 0 :(得分:14)

在不了解表单结构以及如何调用代码的情况下,除了在设置文本后尝试调用lblSesameSeedTotal.Refresh()之外,很难给出任何其他建议。

调用Refresh(MSDN Control.Refresh链接)有效地使控件无效并强制运行时重绘控件,当然,这包括更新其文本。

有很多原因可能导致你必须这样做;重绘是一项昂贵的操作,因此,通常,如果您在表单上的其他位置处理事件,它可能不会更新某些控件。对于其值往往保持不变的标签和类似控件尤其如此(例如,带有文本的文本框的标签:在此输入名称并不需要更改)。