2013-04-01 81 views
8

我有一个c#程序设置,应该接受数量输入,如果复选框被选中。然后它将数量乘以价格并更新适当的标签和总成本。为什么我的C#标签文本值不会更新?

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

有没有在Visual Studio中阻止呈现变化的标签属性?

这里是负责更新label.Text值

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

确保你没有后面的代码重新lblSesameSeedTotal.Text'的'的价值,也什么样的应用,你瞄准winfomr,WPF?网页? – Habib

+0

@Habib WinForm的,我无法找到任何代码重写文本:( – jrounsav

+2

除了@ Habib的有用的建议,并呼吁'lblSesameSeedTotal.Refresh()'设置文本值后帮? – dash

回答

12

不知道更多关于你的形式,你在呼唤你的代码结构,以及如何片断,很难给你以外的任何其他建议而不是在设置文本后尝试呼叫lblSesameSeedTotal.Refresh()

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

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

相关问题