Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 清空列表视图_C#_.net_Winforms - Fatal编程技术网

C# 清空列表视图

C# 清空列表视图,c#,.net,winforms,C#,.net,Winforms,我有一个简单的Windows窗体,其中包含一个名为list的ListView对象。在表单上,一个按钮允许我使用list.Items.Clear()单击清空列表。这个很好用 现在我有一个单独的类Test,它的方法update()在表单外部的一些事件上被调用。在构造表单时,我使用SetList方法传递对列表的引用。在调试模式下,对我触发的事件调用update(),并执行其内容,但我的列表未清除 为什么会这样?参考设置正确,我检查过了 class Test { private ListView

我有一个简单的Windows窗体,其中包含一个名为
list
ListView
对象。在表单上,一个按钮允许我使用
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();
   }
}

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

使用下面修改的
更新
方法:

   public void update()
   {
      this.list.Items.Clear();
      this.list.Update(); // In case there is databinding
      this.list.Refresh(); // Redraw items
   }
如果这不起作用,很明显您正在修改
列表
对象的另一个实例。在本例中,临时修改对象的声明,如下图所示,并查看是否有任何更改。如果确实如此,则需要检查代码以确保清除列表的正确实例:

private static ListView list;

在我的例子中,我没有使用数据绑定,而是使用add()在循环中显式地添加项。在我看来,
ListView.Clear()
ListView.Items.Clear()
不起作用

事实证明…ListView实际上被清除了,但我没有清除输入列表,所以我实际上是在清除,然后用以前清除的项重新填充ListView


有时候这是最简单的事情…哦

如果通过数据源绑定的项目尝试
list.DataSource=null;list.DataBind()我猜它不是。我总是通过this.list.Items.add方法添加这样的代码,95%的几率是您正在清除另一个表单实例的listview,该实例不可见,因为您是使用new而不是visible表单实例创建的。请尝试在
this.list.Items.Clear()之后的下一行设置断点
并在调试器中查看项目是否已清除,可能是一些外部代码添加了项目,谁知道应用程序中发生了什么…它是否已清除,但随后立即再次填充?