我在我的应用程序中使用了进度条..我的应用程序工作正常但进度条是空白的..它没有显示工作进度有什么问题?
答案 0 :(得分:9)
可能您正在主GUI线程中执行工作。这会导致所有GUI事件延迟,直到任务完成。
改为使用BackgroundWorker并使用其ProgressChanged事件来更新进度条。
另请记住在后台工作人员上设置WorkerReportsProgress为true
。
答案 1 :(得分:0)
请参阅StackOverflow的这个问题:
Updating DataGrid From a BackGroundWorker
我假设您必须使用Invoke方法访问UI对象。
如果没有尝试使用以下方法(在拥有控件的底层窗口句柄的线程上执行指定的委托,使用指定的参数列表。):
//In Form.Designer.cs
ProgressBar progressBar= new ProgressBar ();
//In code behind under Background worker method
ProgressVlaueSetter SetProgressValueDel = SetProgressValue;
if (progressBar.InvokeRequired)
{
progressBar.Invoke(SetProgressValueDel , 20);
}
private delegate void ProgressVlaueSetter (intvalue);
//Set method invoked by background thread
private void SetProgressValue(intvalue)
{
progressBar.Value= value;
}
答案 2 :(得分:0)