ListView.Refresh'清除'列表视图

时间:2012-08-17 15:51:58

标签: c# regex file-io directory case-insensitive

我的代码循环操作,并将反馈添加到listview控件。以前,我的代码一直运行正常,但今天发生了一些变化......

listview控件启动如下: before

...但是在我发出对Update()或Refresh()的调用之后,而不是显示我添加的项目,它呈现如下:

after

此时,控件仍然启用且可见。事实上,我的代码与它的唯一交互是添加新项目和Update()。

要添加项目,我使用以下内容:

lvwDrawings.Items.Add(new ListViewItem(new string[]
{
    drawing.PartNo,
    drawing.Revision.ToString(),
    drawing.Issue,
    drawing.DrgTypeText,
    errorStatus !=null ? errorStatus : drawing.Status,
    drawing.Filepath
}));

如果我在这里介绍了一些问题,我使用更简单的lvwDrawings.Items.Add("test");进行了测试,但结果是一样的。如果我执行QuickWatch,控件正确告诉我它包含x项......

1 个答案:

答案 0 :(得分:1)

好的,我发现了这个问题 - 由于某些未知的原因,我之前有lvwDrawings.Items.Clear()来清除不同运行之间的列表,我最终得到了lvwDrawings.Clear()。这不仅会清除列表视图中的项目,还会清除列。

我对两个方面很好奇:当我尝试添加具有特定列的ListViewItem时,如果没有任何列,它会反对,而且,我认为我到底做了什么呢?我做了改变(??!)。

中等有趣的转移:

我通过在第一个列表视图下方创建第二个列表视图来发现问题,然后一直工作直到遇到问题。作为该过程的一部分,我在设计中添加了一列,其中一列是我称之为Path的设计师没有反对的。

但是,在代码中,对静态类Path(例如Path.GetDirectoryName())的方法的引用导致错误 - “ColumnHeader Path没有方法'xxx''或类似的。显然,它假设当我提到Path时,我指的是列表视图中的列。

此外,当我重命名列(到'FullPath')时,它重命名了代码中对Path的所有引用,例如。 FullPath.GetDirectoryName() ...