【发布时间】: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