我的代码循环操作,并将反馈添加到listview控件。以前,我的代码一直运行正常,但今天发生了一些变化......
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项......
答案 0 :(得分:1)
好的,我发现了这个问题 - 由于某些未知的原因,我之前有lvwDrawings.Items.Clear()
来清除不同运行之间的列表,我最终得到了lvwDrawings.Clear()
。这不仅会清除列表视图中的项目,还会清除列。
我对两个方面很好奇:当我尝试添加具有特定列的ListViewItem时,如果没有任何列,它会反对,而且,我认为我到底做了什么呢?我做了改变(??!)。
中等有趣的转移:
我通过在第一个列表视图下方创建第二个列表视图来发现问题,然后一直工作直到遇到问题。作为该过程的一部分,我在设计中添加了一列,其中一列是我称之为Path
的设计师没有反对的。
但是,在代码中,对静态类Path(例如Path.GetDirectoryName()
)的方法的引用导致错误 - “ColumnHeader Path没有方法'xxx''或类似的。显然,它假设当我提到Path时,我指的是列表视图中的列。
此外,当我重命名列(到'FullPath')时,它重命名了代码中对Path的所有引用,例如。 FullPath.GetDirectoryName()
...