我有一个简单的 Windows 窗体,其中包含一个名为 list
的 ListView
对象。在窗体上,一个按钮使我能够在单击 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/