.NET Listview刷新

Pau*_*els 5 .net c# listview winforms

我有以下代码,它基本上从数据库中获取值并填充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());                    
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,这会以较短的间隔(每秒)重复执行,导致列表视图中的项目不断消失并重新出现.有没有办法阻止列表视图刷新,直到完成更新?如下所示:

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
}
Run Code Online (Sandbox Code Playgroud)

jga*_*fin 9

像这样:

try
{
    lvwMyList.BeginUpdate();
    //bla bla bla

}
finally
{
    lvwMyList.EndUpdate();
}
Run Code Online (Sandbox Code Playgroud)

如果要在填充之前清除列表,请确保lvwMyList.Items.Clear() 在之后 调用BeginUpdate.

  • 考虑将EndUpdate放在finally块中. (2认同)
  • @TrueWill:修复. (2认同)