[英]visual c sharp progress bar with background worker
我有以下代码可以更新Visual C Sharp中的进度条。 它工作正常,并且条形图针对每个百分比移动。 但是我也有我从另一个网站上的帖子中获得的代码,这是假设将进度条的值作为百分比百分比放在进度条的中间。 它会瞬间显示进度条值的%,但随后消失。 我是c的新手,在pBar值更改后尝试了诸如pBar.update和pBar.refresh之类的几项操作。 我已经编辑了一些代码,以使其更易于理解。 参见下文,一旦我执行了reportprogress,背景工作程序progresschanged就执行了一次,并且再次看到pBar值发生了变化,并且文本框文本也得到了更新,但是由于某种原因,在下方绘制进度条内的%文本的代码被覆盖了。 我再次看到%的瞬间。 您可以在尝试各种方法的地方查看我的一些评论,以查看它是否会重绘%
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
backgroundWorker1.ReportProgress(10);
collect_long_process();
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
pBar.Value = e.ProgressPercentage;
txtBox_pBar.Text = "Gathering info";
int percent = 10;//(int)(((double)pBar.Value / (double)pBar.Maximum) * 100);
pBar.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular),
Brushes.Black, new PointF(pBar.Width / 2 - 10, pBar.Height / 2 - 7));
//pBar.Update();
//Application.DoEvents();
}
那段代码错了。
您需要处理进度条的Paint
事件并在e.Graphics
上进行e.Graphics
。
否则,下次控件绘制自身时,您的图形将被覆盖。
通常,永远不要使用CreateGraphics()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.