【发布时间】:2014-01-15 01:27:07
【问题描述】:
我有一个 WinForm,可以将数据库中的一些元素添加到列表视图中。由于加载所有内容需要相当长的时间,因此我尝试制作后台工作人员。除了添加到列表代码之外,在后台工作人员中一切正常:
ListViewItem lvi = new ListViewItem(event);
lvi.SubItems.Add(name);
lvi.SubItems.Add(status);
lvi.SubItems.Add(x);
lvi.SubItems.Add(y);
lvi.SubItems.Add(z);
TABEL.Items.Add(lvi);
MessageBox.Show("check");
代码未到达消息框并中断循环。但是,如果列表视图不可见,那么它会添加并且到达消息框。 我可以在所有添加完成后使列表视图可见,但我想知道是否有办法让它至少显示它在某些时间间隔添加的内容的一部分..(例如 25%、50% 完成)?
【问题讨论】:
-
it takes quite some time to load everything- 你可能想看看this sort clip。 -
我认为,隐藏列表视图会破坏 bg 工作人员的目的。我做了完全相同的事情 - 使用 bg worker 填充 lw 并且效果很好。让我找到代码...
-
你犯了不止一个错误。首先不忽略 RunWorkerCompleted 事件处理程序中的
e.Error属性。它告诉你你做错了什么。当您将异常消息粘贴到“搜索”框中时,您会发现 数百 个关于它的问题。 -
@HansPassant 我不知道如何设置 e.error 消息。
-
if (e.Error != null) MessageBox.Show(e.Error.ToString());
标签: c# winforms listview backgroundworker show