首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何刷新C#窗体内GroupBox/Panel中的标签和其他控件?

如何刷新C#窗体内GroupBox/Panel中的标签和其他控件?
EN

Stack Overflow用户
提问于 2012-03-11 18:51:45
回答 4查看 5.6K关注 0票数 0

我正在设计一个C#应用程序,其中有一个显示OS和RAM相关信息的组框。我设计它使用控件-标签放在一个显示RAM相关信息的Groupbox中。

我有一个刷新按钮,当点击应该显示%的RAM目前使用。

为此,我需要groupbox中的标签(以及其他几个标签)来刷新并重新计算值.

我该怎么做?在RefreshButton_Click事件中,我尝试了以下所有的方法,但都没有效果:

代码语言:javascript
复制
label1.Refresh(); 

GroupBox1.Refresh(); 

Form1.Refresh(); 
Form1.Invalidate(true); 

Panel1.Refresh();

请在这方面有所帮助,因为我不认为重新加载一个完整的表单将是一个有效的解决方案。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-11 19:09:40

刷新只会显示相同的赋值。必须将新的计算值设置为RefreshButton_Click处理程序中的控件:

代码语言:javascript
复制
var myNewValue = CalculateNewValue();
label1.Text = myNewValue;

希望能帮上忙!

票数 1
EN

Stack Overflow用户

发布于 2012-03-11 19:20:53

创建一个包含要显示的属性的类,并为所有属性实现INotifyPropertyChanged接口。然后使用数据绑定将对象绑定到窗体上的控件。当对象的属性发生变化时,控件将自动更新。

使用INotifyPropertyChanged功能或google INotifyPropertyChanged DataBinding WinForms c#

票数 1
EN

Stack Overflow用户

发布于 2012-03-11 19:09:43

在winforms中,不刷新整个窗体,只需使用更新窗体部分的触发器事件即可。我在下面列出了这样做的方法。基本上,您需要一个计算函数,并且需要通过设置带有该函数输出的文本来更新标签。您需要根据需要添加尽可能多的函数。

最后,您将希望创建一个计算类,因为您希望将您的UI与计算分开。

下面是一个示例:

代码语言:javascript
复制
private void RefreshButton_Click(object sender, EventArgs e)
{
    //Assuming label1 is for the Ram
    label1.text = getRamString();
}

private string getRamString()
{
    float ramValue = //Calculate the RAM
    return string.Format("{0}%", ramValue);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9657870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档