我有以下代码,基本上从数据库中获取值并填充 ListView 。
using (IDataReader reader = cmd.ExecuteReader())
{
lvwMyList.Items.Clear();
while (reader.Read())
{
ListViewItem lvi = lvwMyList.Items.Add(reader["Value1"].ToString());
lvi.SubItems.Add(reader["Value2"].ToString());
}
}
我遇到的问题是,这会以很短的时间间隔(每秒)重复执行,导致 ListView 中的项目不断消失和重新出现。有什么方法可以阻止 ListView 刷新,直到更新完成?如下所示:
using (IDataReader reader = cmd.ExecuteReader())
{
lvwMyList.Items.Freeze(); // Stop the listview updating
lvwMyList.Items.Clear();
while (reader.Read())
{
ListViewItem lvi = lvwMyList.Items.Add(reader["Value1"].ToString());
lvi.SubItems.Add(reader["Value2"].ToString());
}
lvwMyList.Items.UnFreeze(); // Refresh the listview
}
最佳答案
像这样:
try
{
lvwMyList.BeginUpdate();
//bla bla bla
}
finally
{
lvwMyList.EndUpdate();
}
如果您想在填充列表之前清除列表,请确保在 BeginUpdate
之后调用 lvwMyList.Items.Clear()
。
关于c# - .NET ListView 刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3299021/