我是C#.NET的新手。我試圖用我的主界面中的一個Progess欄創建一個窗體來顯示進度。我使用BackgroundWorker來調用它。我能夠顯示進度對話框,但不能更新進度欄值。請找到下面的代碼。無法使用BackgroundWorker更新單獨表單中的進度條c#.net表單
主界面:
namespace GC
{
public partial class MainUI : Form
{
private ProgressBar oProgressBar;
public MainUI()
{
InitializeComponent();
}
private void runButton_Click(object sender, EventArgs e)
{
oProgressBar = new ProgressBar();
backgroundWorker1 = new BackgroundWorker();
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
backgroundWorker1.ProgressChanged += new ProgressChangedEventHandler(backgroundWorker1_ProgressChanged);
backgroundWorker1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker1_RunWorkerCompleted);
backgroundWorker1.RunWorkerAsync();
oProgressBar.ShowDialog();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
//some work here
for (int i = 0; i < 20; i++)
backgroundWorker1.ReportProgress(i);
}
private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
oProgressBar.Close();
}
void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
oProgressBar.progressBar1.Value = e.ProgressPercentage;
}
}
}
進度條UI這種形式包含一個進度條
namespace GC
{
public partial class ProgressBar : Form
{
public ProgressBar()
{
InitializeComponent();
}
}
}
會發生什麼?酒吧是否滿20%? – musefan
可能與oProgressBar.ShowDialog();它停止,直到你關閉oProgressBar。但我不確定。 – asharajay
發生了什麼......? – Jonesopolis