c# - 清空 ListView

标签 c# .net winforms

我有一个简单的 Windows 窗体,其中包含一个名为 listListView 对象。在窗体上,一个按钮使我能够在单击 list.Items.Clear() 时清空列表。这很好用。

现在我有一个单独的类 Test,它的方法 update() 在表单外部的某些事件上被调用。在构建表单时,我使用 SetList 方法传递了对列表的引用。在 Debug模式下,update() 在我触发的事件上被调用,它的内容被执行,但我的列表没有被清除。

这是为什么?引用设置正确,我检查过。

class Test
{
   private ListView list;

   public void setList(ListView list)
   {
      this.list = list;
   }

   public void update()
   {
      this.list.Items.Clear();
   }
}

当我仔细观察通过在 update() 中放置断点来修改我的列表时,列表被清理并保持清理状态。看起来真的好像是另一个正在修改的列表,但我只有一个而且从来没有对它做任何新的......????

最佳答案

使用下面修改过的update 方法:

   public void update()
   {
      this.list.Items.Clear();
      this.list.Update(); // In case there is databinding
      this.list.Refresh(); // Redraw items
   }

如果这不起作用,很明显您正在修改 list 对象的另一个实例。在这种情况下,暂时像下面这样修改对象的声明,看看是否有任何改变。如果是这样,您将需要检查您的代码以确保您正在清除列表的正确实例:

private static ListView list;

关于c# - 清空 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8169852/

相关文章:

c# - 在 db4o 中打开具有重命名的命名空间/程序集的对象

c# - 将 .nupkg 文件检入源代码管理 - 如何在构建时恢复?

.net - 如何在源头处理关闭(大 X)按钮?

c# - 任务栏最小化 C# Windows 窗体问题

c# - Visual Studio 2008 烦人的 block 注释自动处理

c# - 如何处理多个资源文件进行本地化?

c# - 服务器-客户端消息的快速文本解析器 - MMO

c# - 如何在 PowerPoint 中嵌入 ActiveX 控件

c# - 如何动态调用 TryParse?

c# - 在 C# 中,将大文件加载到 winform richtextbox