2017-06-13 98 views
-1

我想要一个进度条来显示要执行的方法的百分比。正在执行的方法是ms测试。当用户点击按钮ms test 执行,我想要一个进度条显示。 ms测试是所选工作流程的列表。我有一种方法可以获得选定工作流程的列表 - 如果 进度条显示选择工作流程列表的百分比。C#winforms进度条

目前我有一个进度条,显示05只是一秒钟,然后显示一个流动的绿色酒吧。这是我有运行MS测试按钮

RunTestsProgressBar.Refresh(); 
     int percent = (int)(((double)RunTestsProgressBar.Value/(double)RunTestsProgressBar.Maximum) * 100); 
     RunTestsProgressBar.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(RunTestsProgressBar.Width/2 - 10, RunTestsProgressBar.Height/2 - 7)); 
+0

你打算在另一个线程上工作吗?否则,随着您的方法逐步完成,您的进度栏将不会在UI中更新。 –

+0

该方法已经在后台线程上工作了。我为进度条使用了另一个线程? – Julie

+0

您只能修改主(UI)线程上的UI。您必须从后台线程调用主线程中的方法。 –

回答

1

当我不得不做这样的事情在过去我通常使用一个BackgroundWorker的,并利用其ReportProgress()方法,火灾的原因代码UI线程上的ProgressChanged事件。

我认为这是去这样做的事情,如果你知道你要多少测试瓶坯和可拨打的UpdateProgress每个测试完成后的好办法。

这里是一个很好的易于遵循的例子的链接。

Dot NET Perls - ProgressBar w/ BackgroundWorker

+0

我试过这个,但我遇到了同样的问题 – Julie

+1

听起来好像你正在将** ProgressBar **的_ ** Style ** _属性设置为_Marquee_。尝试将其设置为_Block_或_Continuous_。 – user3583535