【发布时间】:2013-04-26 23:13:27
【问题描述】:
我有一个 ListView,并通过循环将项目逐个添加到其中
这个 ListView 有 CheckBoxes
在该循环中,我决定是否应选中复选框
问题是如果要检查的复选框太多,添加项目太慢
这是代码:
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow drow = dt.Rows[i];
// Only row that have not been deleted
if (drow.RowState != DataRowState.Deleted && int.Parse(drow["season"].ToString()) != 0)
{
ListViewItem lvi = new ListViewItem(drow["episode_name"].ToString());
lvi.SubItems.Add(drow["first_aired"].ToString());
lvi.SubItems.Add(drow["episode"].ToString());
lvi.SubItems.Add(drow["season"].ToString());
lvi.SubItems.Add(drow["rating"].ToString());
lvi.SubItems.Add(drow["episode_id"].ToString());
if (bool.Parse(drow["watched"].ToString()))
{
lvi.Checked = true; //this is the problem, when i remove it, adding is fast
}
else {
lvi.Checked = false;
}
episodesList.Items.Add(lvi);
}
}
我怎样才能让它更快?
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
@pedja 你是在计算你的 Db 调用还是只计算循环?
-
问题是我有更新数据库的 listView_ItemCheck 处理程序,所以每次检查项目时我也会更新数据库
-
是的,如果它被触发,那肯定会导致问题。请参阅我的回答中的评论以获取解决方法。