2

我的代码正在循环操作并向列表视图控件添加反馈。以前,我的代码一直运行良好,但今天发生了一些变化......

listview 控件的开头是这样的: 前

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

后

此时,该控件仍处于启用状态且可见。事实上,我的代码与它的唯一交互是添加新项目和 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 个项目...

4

1 回答 1

1

好的,我找到了问题 - 出于某种未知原因,我之前不得不lvwDrawings.Items.Clear()在不同运行之间清除列表,但不知何故我最终得到了lvwDrawings.Clear(). 这不仅会清除列表视图中的项目,还会清除列。

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

适度有趣的转移:

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

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

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

于 2012-08-17T17:44:59.293 回答