C#:在自定义消息框中显示进度条更改
C# : Show progress bar change in custom message box
我有 2 个表单,MainForm 和 ProgressForm。
#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();
}
}
}
我需要在 MainForm
到 ProgressForm
中显示我的后台进程的进度(如下所示)
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;
我有 2 个表单,MainForm 和 ProgressForm。
#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();
}
}
}
我需要在 MainForm
到 ProgressForm
中显示我的后台进程的进度(如下所示)
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;