ProgressBar不会填充宽度

时间:2015-04-15 09:24:35

标签: c# winforms progress-bar backgroundworker

C# Winform中,我有BackgroundWorker backgroundWorker1ProgressBar 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的宽度),但这也没有用。

我浏览了很多网站,但没有发现任何类似的问题。 你能指出我出错的地方和地点吗?任何帮助都非常感谢。

由于

1 个答案:

答案 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已经设置了相同的属性,它甚至第一次被使用,但在访问之前需要设置其属性才能工作!!!!

希望它可以帮到某人。

由于