【发布时间】:2011-11-24 15:08:25
【问题描述】:
我正在使用以下代码。
为什么不能正常运行?
private void Form1_Shown(object sender, EventArgs e)
{
for (int i = 1; i <= 100; i++)
{
Application.DoEvents();
Thread.Sleep(200);
progressBar1.Refresh();
progressBar1.Value = i;
progressBar1.CreateGraphics().DrawString(i.ToString() + "%",
new Font("Arial", (float)8.25, FontStyle.Regular),
Brushes.Black, new PointF(progressBar1.Width / 2 - 10,
progressBar1.Height / 2 - 7));
}
}
更新:
为什么不总是显示文字?
【问题讨论】:
-
你阻塞了 UI 线程。不要那样做。查看右侧的一些相关问题。
-
此外,在大多数情况下,DoEvents = evil。 (hashvb.earlsoft.co.uk/Why_DoEvents_Are_Evil)
-
@JonSkeet- 只是告诉某人避免阻塞 UI 线程并没有帮助。 (说起来容易做起来难)。右边的相关问题也没有。我问了一个 follow-up question 来证明这个困难。
标签: c# progress-bar winapp