【问题标题】:Why won't my C# label text value update?为什么我的 C# 标签文本值不会更新?
【发布时间】:2013-04-01 06:57:19
【问题描述】:

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

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

Visual Studio 中是否有一个标签属性可以防止呈现更改?

这里是负责更新label.Text值的sn-p

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

【问题讨论】:

  • 确保你没有在你的代码中重新设置lblSesameSeedTotal.Text的值,你的目标是什么类型的应用程序 winfomr, wpf ?网络?
  • @Habib winform,我找不到任何覆盖文本的代码:(
  • 除了@Habib的有用建议,设置文本值后调用lblSesameSeedTotal.Refresh()有帮助吗?
  • @dash Refresh 彻底解决了这个问题!非常感谢你们俩
  • 你在使用更新面板吗?

标签: c# winforms visual-studio-2012


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多