原来如此!我正在玩winForm中的进度条,但我发现了一些东西。如果我使用For语句,进度条会从0到100瞬间,即使我输入EX:Thread.Sleep(10000);等待时间再过100%。
我做错了什么?
public void progressbar(object sender, EventArgs e)
{
for (int i = 0 ; i < 100; i++)
{
Thread.Sleep(10);
progressBar1.Value = i;
}
}
答案 0 :(得分:3)
您正在阻止UI线程。当您的事件处理程序正在运行时,您的窗口无法处理任何传入的窗口消息,因此它不会更新,也不会重新绘制。不要阻止UI线程。
答案 1 :(得分:0)
您需要更新进度条的每个互动。另请注意,在您的for中,将仅转到90而不是100.请尝试此代码:
for (int i = 0; i <= 100; i++)
{
Thread.Sleep(10);
progressBar1.Value = i;
progressBar1.Refresh();
}
编辑: 要工作,你必须放入一些事件,如单击按钮,从不在表单加载