如何在C#中向ListView添加不可见项?

如何在C#中向ListView添加不可见项?,listview,Listview,我将开发一个项目,通过程序UI中的ListView控件与文件和文件夹交互。我在listview中添加了一个自定义排序方法,可以根据项目的不同列对项目进行排序。listview中有一些列,如大小和日期。Size列包含缩短的大小值,例如“1.9 MB”而不是“2000000”字节,因此无法按缩短的大小值对listview项进行排序并获得预期结果 有没有办法在listview中添加一些不可见的列来存储额外的值?或者将一些额外的项目绑定到listview项目?您不能有不可见的列,但可以将不想显示的列的宽

我将开发一个项目,通过程序UI中的ListView控件与文件和文件夹交互。我在listview中添加了一个自定义排序方法,可以根据项目的不同列对项目进行排序。listview中有一些列,如大小和日期。Size列包含缩短的大小值,例如“1.9 MB”而不是“2000000”字节,因此无法按缩短的大小值对listview项进行排序并获得预期结果


有没有办法在listview中添加一些不可见的列来存储额外的值?或者将一些额外的项目绑定到listview项目?

您不能有不可见的列,但可以将不想显示的列的宽度设置为0。这样,除非用户尝试调整旁边列的大小,否则它们不会显示。用户现在可以直观地知道它在那里

您可以通过自定义排序方式来解决这个问题,而无需隐藏列

对于winforms:


对于wpf:

有时简单的事情变得如此复杂。 我知道了。。。一个简单方便的解决方案

实际上,有可能像拥有比列更多的子项一样容易地拥有隐藏项。例如,有6个子项和4列意味着我们有2个“隐藏”子项。剩下的事情就是将排序过程重定向到这些可排序的隐藏子项(列)


多亏了WraithNath&Robert Levy

如果您不想让调整大小的事件“找到”隐藏的列,请务必覆盖它们。谢谢WraithNath,但我正在寻找更好的解决方案。我已经将Vista主题应用于我的listview,现在listview显示其零宽度列。;)您好,maxeemo,您是基于列表视图中的列表项还是在数据源中对数据进行排序?您可以使用一些linq直接在源代码中执行排序,但是由于缺少datasource属性,因此需要清除并重新填充列表。这会影响性能,但这是使用列表视图的一个缺点。我似乎记得在代码项目上看到了一个数据绑定列表视图,这可能也值得一看。