我在Form1
上创建了以下两个控件public(Modifiers)ProgressBar
Label
同样在Form1上,我像这样启动Form2
Form2 f = new Form2(progressBar1, label1)
在Form2上,我在Form2中运行以下代码
private ProgressBar progressBarForm2;
private Label labelForm2;
public Form2(ProgressBar pb, Label lb)
{
labelForm2 = lb;
progressBarForm2 = pb;
}
然后在Form2.cs中的一个方法中,我有以下代码
scoreScreen = 4;
progressBarForm2.Value = scoreScreen;
labelForm2.Text = ((progressBarForm2.Value / progressBarForm2.Maximum) * 100).ToString() + "% Complete";
labelForm2.Refresh();
Application.DoEvents();
ProgressBar在Form1上正在更新
Form1上的progressBar正在更新。标签不是
我假设当我将控件传递给方法时,它通过引用传递,因此对方法中控件的任何更改都将更新原始控件。
我找不到更好的方法来更新Form1上的控件,所以如果你们有更好的方法,我就是开放的。
答案 0 :(得分:2)
看起来像整数divison 案例:
((progressBarForm2.Value / progressBarForm2.Maximum) * 100).ToString()
,因为progressBarForm2.Maximum
大于progressBarForm2.Value
progressBarForm2.Value / progressBarForm2.Maximum == 0
进行修改,只需更改订单(首先乘以 100,然后除以):
labelForm2.Text = ((progressBarForm2.Value * 100) / progressBarForm2.Maximum).ToString();
答案 1 :(得分:2)
关于你的评论" 我找不到更好的方法来更新Form1上的控件,所以如果你们有更好的方法,我就会打开。& #34;
如果将控件保密为Form1并公开方法或属性以访问您感兴趣的字段,那会更好。
例如,在Form1中
public String LabelText
{
get { return label1.Text; }
set { label1.Text = value; }
}
然后,您可以将Form1实例传递给Form2构造函数
Form2 frm2 = new Form2(this);
在Form2中
private Form1 parent;
public Form2(Form1 frm1)
{
parent = frm1;
}
然后你可以使用公共财产
parent.LabelText = "New Label";
然后,您可以使用ProgressBar执行类似的操作