10

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

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

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

这是负责更新 label.Text 值的片段

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

1 回答 1

14

lblSesameSeedTotal.Refresh()如果不了解更多关于表单结构以及如何调用代码的信息,除了在设置文本后尝试调用之外,很难给您任何其他建议。

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

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

于 2013-04-01T07:24:47.657 回答