【问题标题】:C# - Updating Progress BarC# - 更新进度条
【发布时间】:2018-11-15 11:58:13
【问题描述】:

我有一个将 Excel 记录导入用户界面以读取数据的应用程序。此导入需要相当长的时间,因此我尝试实现一个进度条供用户查看进度。

首先我以外部形式进行,一切正常。现在我将其更改为加载表单上的进度条,突然它不起作用。我所做的只是从我的 Class 源表中更改表单引用。这是制作进度条的代码。

我对该代码所做的唯一更改是更改为“OpenForm”,因为那是新进度条所在的位置。我知道这段代码会将进度条设置为 20 并且之后不会移动。这是在只有进度条的表单上工作的,但是在这个表单上它不起作用。我错过了什么吗?

        OpenForm.progressBar1.Minimum = 0;
        OpenForm.progressBar1.Maximum = 100;
        OpenForm.progressBar1.Step = 1 / 50;

        for (int row = 8; row <= 50; row++)
        { 
            IssueRef.Add(ExcelWksht1.Cells[row, 1].Value.ToString());
            Date.Add(ExcelWksht1.Cells[row, 4].Value.ToString());
            Status.Add(ExcelWksht1.Cells[row, 2].Value.ToString());
            Severity.Add(ExcelWksht1.Cells[row, 9].Value.ToString());
            Text.Add(ExcelWksht1.Cells[row, 3].Value.ToString());

            decimal ProgressVal = ( 10m /50m) * 100m;
            int Val = Convert.ToInt32(ProgressVal);

            OpenForm.progressBar1.Value = Val;
            OpenForm.progressBar1.Refresh();

        }

【问题讨论】:

  • 究竟是什么不起作用?
  • 如果您只是添加到集合中,我希望它会如此之快,以至于增量条更改无论如何都将实际上是不可见的。
  • 从同一个线程刷新 UI?
  • 这是 WinForms 吗?除了正在使用的框架之外:将 BL 与 UI 分开。 IE。不要“以形式进行”。在单独的课程中进行,这可以表明进度。无论是通过事件、回调还是通过 IProgress 使用异步/任务。

标签: c# progress-bar


【解决方案1】:
    for (int row = 8; row <= 50; row++)
        { 
            IssueRef.Add(ExcelWksht1.Cells[row, 1].Value.ToString());
            Date.Add(ExcelWksht1.Cells[row, 4].Value.ToString());
            Status.Add(ExcelWksht1.Cells[row, 2].Value.ToString());
            Severity.Add(ExcelWksht1.Cells[row, 9].Value.ToString());
            Text.Add(ExcelWksht1.Cells[row, 3].Value.ToString());

            decimal ProgressVal = ( 10m /50m) * 100m;
            int Val = Convert.ToInt32(ProgressVal);

            OpenForm.progressBar1.Value = Val;
            //OpenForm.progressBar1.Refresh(); remove this
//add 
Application.DoEvents();

        }

【讨论】:

  • DoEvents 是邪恶的!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
相关资源
最近更新 更多