2012-08-17 76 views
2

我的代码循环操作,并将反馈添加到列表视图控件。此前,我的代码一直工作正常,但今天的东西已经改变...ListView.Refresh'清除'列表视图

ListView控件开始了这样的: before

...但我发出了一个电话后,更新()或刷新(),而不是表明我已经加入的项目,它呈现这样的:

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项...

+0

听起来像一个短暂的故障?尝试重新启动。尝试做一个完整的构建。尝试禁用任何可能影响系统窗口的其他程序。你有没有改变任何项目属性?添加任何新的参考?如果您创建一个新的空白项目并将代码粘贴到其中,它会发生吗? – 2012-08-17 16:08:07

+0

我试过重新启动VS,但没有改变。我现在会尝试重新启动。发生了很多其他变化,但不涉及这种控制。我一直在想着可能怀疑的变化...... – CJM 2012-08-17 16:49:43

+0

你有没有试过做一个lvwDrawings.RedrawItems?一旦创建新的ListViewItem,新项目是否具有任何'null'属性? – Kcvin 2012-08-17 17:03:41

回答

1

好的,我发现了这个问题 - 由于某些未知的原因,我以前有lvwDrawings.Items.Clear()清除不同的列表跑,我不知何故结束了lvwDrawings.Clear()。这不仅会清除列表视图中的项目,还会清除列。

对两个问题很好奇:我会尽管当我试图添加一个ListViewItem与特定的列时,它会反对,当没有任何列,还有,我到底在做什么?当我做出改变(??!)。

适度有趣改道:

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

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

+0

很好的工作诊断和解决您的问题!很高兴看到人们超越他们的调试技能。 – 2012-08-17 17:54:56

+0

另外,我至少做了一次同样的事情。:) – 2012-08-17 17:55:19

+0

哦,我的调试技能得到了绰绰有余的练习。可悲的是。 ;) – CJM 2012-08-17 18:26:02