清空ListView

BuZ*_*uZz 9 .net c# winforms

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

现在我有一个单独的类Test,其方法update()在窗体外部的一些事件上调用.在构造表单时,我使用该SetList方法传递对列表的引用.在调试模式下,update()调用我触发的事件,并执行其内容,但不清除我的列表.

为什么是这样?我检查了参考设置是否正确.

class Test
{
   private ListView list;

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

   public void update()
   {
      this.list.Items.Clear();
   }
}
Run Code Online (Sandbox Code Playgroud)

当我通过在update()中放置断点来仔细查看我的列表时,列表会被清理并保持清洁状态.它似乎真的是另一个被修改的列表,但我只有一个,从来没有做过任何新的... ????

Teo*_*gul 6

使用以下修改的update方法:

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

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

private static ListView list;
Run Code Online (Sandbox Code Playgroud)