我正在创建一个模拟进度条的表单。
该表单具有进度条,带有标题的标签和另一个显示进度百分比的标签。
这个想法是在开始循环之前,我使用该循环的元素计数创建表单的实例。循环的每次迭代都会调用一个方法来更新进度条和百分比标签。
进度栏正在更新,但标题和百分比标签未在更新。我读过那是因为所有内容都在同一线程中执行,并且用户界面没有更新。
这是我的代码:
主程序
...
MyProgressBar_Form pb = new MyProgressBar_Form("Test of progress bar", selectionBudget.Count);
pb.Show();
foreach (SelectedObject obj in selectionBudget) {
pb.meterProgress();
...
}
pb.Close();
...
表单类
public partial class MyProgressBar_Form : Form {
public MyProgressBar_Form(string title, int elems) {
InitializeComponent();
titleLbl.Text = title;
progressBar1.Minimum = 0;
progressBar1.Maximum = elems;
progressBar1.Step = 1;
this.Refresh();
}
public void meterProgress() {
if (progressBar1.Value < progressBar1.Maximum) {
progressBar1.Value++;
double percentage = Math.Round((double)(progressBar1.Value / progressBar1.Maximum * 100), 2);
progressLbl.Text = $"{percentage}%";
this.Refresh();
}
}
}
答案 0 :(得分:-1)
在循环内尝试Application.DoEvents()。