在C# Winform
中,我有BackgroundWorker backgroundWorker1
和ProgressBar progressBar1
。
ProgressBar
的属性为:Min =0, Max =100, Step=1, Value = 0 Size-W-508, H=23
。
在我的DoWork()
中,我以这种方式致电ReportProgress(70, "Transferring")
。
在ProgressChanged()
:
string status = (string)e.UserState;
progressBar1.Value = e.ProgressPercentage;
progressBar1.Refresh();
ProgressBar
正在发生变化,其价值也在发生变化。我还跟踪progressBar1.Value
并显示正确的结果。
但是当70被传递并被设置为ProgressPercent
时,为什么width
progressBar1
的70%未被覆盖。即使通过100,也不包括progressbasr的全宽。我试图将ProgressBar
的最大值设置为508(即ProgressBar的宽度),但这也没有用。
我浏览了很多网站,但没有发现任何类似的问题。 你能指出我出错的地方和地点吗?任何帮助都非常感谢。
由于
答案 0 :(得分:0)
在尝试越来越多之后,再尝试了一件事,确保它不会有任何区别;但它奏效了。
在致电backgroundWorker1.RunWorkerAsync();
之前添加了以下代码:
if (backgroundWorker1.IsBusy != true)
{
progressBar1.Value = 0;
progressBar1.Step = 1;
progressBar1.Minimum = 0;
progressBar1.Maximum = 100;
transferFileType = 'R';
connecting = true;
statusBarLbl.Text = "Processing.....Transferring Report Files to PC ";
progressStatusLbl.Text = "Retrieving Device Id and Info";
// Start the asynchronous operation
backgroundWorker1.RunWorkerAsync();
}
它按我的意愿工作。休息所有代码是一样的。刚刚添加了进度条的上述4个属性。
令人惊讶的是,ProgressBar
已经设置了相同的属性,它甚至第一次被使用,但在访问之前需要设置其属性才能工作!!!!
希望它可以帮到某人。
由于