C#:在自定义消息框中显示进度条更改

C# : Show progress bar change in custom message box

我有 2 个表单,MainFormProgressForm

#1 MainForm.cs 有一个按钮,单击它会启动我的 backgroundWorker1。

 ProgressForm pg = new ProgressForm(); 

 private void StarBtn_Click(object sender, EventArgs e)
        {
           
           pg.Show();
           
            if(!backgroundWorker1.IsBusy)
            {
                backgroundWorker1.RunWorkerAsync();
            }
        }

 private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
          //time consuming tasks...
        }

#2 ProgressForm是我添加进度条和标签的地方.

namespace MainApp
{
    public partial class ProgressForm : Form
    {
        public ProgressForm()
        {
            InitializeComponent();
        }

    }
}

我需要在 MainFormProgressForm 中显示我的后台进程的进度(如下所示)

 private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
           //something like..
           //this.progressBar1.Value = e.ProgressPercentage;
           //in ProgressForm...
            
        }

并在标签中显示已完成并关闭表单。

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
           //label.Text = "Completed"
          // Close the ProgressForm...
            
        }

如何从 MainForm 中的 backgroundworker 访问 ProgressFrom 中的元素并进行进度更新。

您的后台工作人员事件在 MainForm 中?如果是,则将 public 属性添加到您的 ProgressForm 并根据提供的值相应地设置标签和/或进度条。

进度表

public int Progress {
set {
    progressBar1.Value = value;
  }
}
public string LabelText{
set {
   label.Text = value;
  }
}

主窗体

pg.Progress = e.ProgressPercentage;