c# - .NET ListView 刷新

标签 c# .net winforms listview

我有以下代码,基本上从数据库中获取值并填充 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/

相关文章:

c# - 从 StackExchangeRedisCacheClient 迁移到 RedisCacheClient

c# - 字符串和字符串有什么区别?

c# - 带线程闭合的套接字

winforms - 是否可以避免 Winform 上的多次按钮点击?

C#在计时器停止后停止事件处理程序

c# - MvvmCross Monotouch - 无法在真实 iPad 上绑定(bind)属性,但它可以在模拟器上运行

c# - 形成 KeyUp 和 KeyDown 事件来改变变量

c# - 寻找更好的设计 : A readonly in-memory cache mechanism

c# - 为什么我在这里得到 "Cannot access a closed Stream"?

c# - 将EmguCV图像转换为系统绘图位图