【发布时间】:2013-07-08 11:30:23
【问题描述】:
我正在尝试将百分比值放入我的进度条,但它看起来像一个闪烁然后消失。
这是我的ProgressChanged 活动:
C# 代码
public void button1_click(object sender, EventArgs e)
{
BackgroundWorker _worker = new BackgroundWorker();
_worker.WorkerReportsProgress = true;
_worker.ProgressChanged += new ProgressChangedEventHandler(_worker_ProgressChanged);
_worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(_worker_RunWorkerCompleted);
_worker.DoWork += (s, e2) =>
{
for (int i = 0; i <= xmlnode.Count - 1; i++)
{
_worker.ReportProgress((int)100 * i / (xmlnode.Count - 1));
// Many validations here
}
}
}
void _worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
// Here I tryied to put the percentage value in progress bar
int percent = (int)(((double)progressBar1.Value / (double)progressBar1.Maximum) * 100);
progressBar1.CreateGraphics().DrawString(percent.ToString() + "%", new Font("Arial", (float)8.25, FontStyle.Regular), Brushes.Black, new PointF(progressBar1.Width / 2 - 10, progressBar1.Height / 2 - 7));
}
【问题讨论】:
-
如何为您的工作人员调用 ReportProgress?
-
什么闪烁和消失? ProgressBar 控件?控件中的栏?文字?
-
@SebastianNegraszus 在我的进度条中通知 porcentage 的文本值。
-
@JleruOHeP 我用这些信息更新了我的问题。
-
无论您使用 CreateGraphics() 绘制的内容,都会在 ProgressBar 重新绘制自身时再次快速擦除。是的,看起来它“闪烁”。您将需要一种不同类型的进度条控件,而不是工具箱中的那个。通过从 Control 类派生它们很容易自己创建。