ListView图标未被删除。以另一种方式显示?

问题描述:

我有一个ListView与几列。 ListView的SmallImageList包含三个图标;向上箭头,向下箭头和文件夹图标。当单击其中一个列标题时,列表按照该值排序,为了说明这一点,将一个图标插入标题中,显示其SmallImageList中的向上或向下行。这工作正常。ListView图标未被删除。以另一种方式显示?

我的问题是,当点击一个新的列进行排序时,旧标题中的图标应该消失,但它不会。而是插入一个文件夹图标。每次点击一个新的标题时都会发生这种情况,因此最终所有标题都用文件夹图标填充。

无论何时单击列时,所有列都会迭代并将它们的ImageKey设置为空字符串,并在稍后用箭头的ImageKey替换(如果它是单击的列)。空字符串显式加载文件夹图标。

for (int i = 0; i < m_LVCases.Columns.Count; i++) 
{ 
    m_LVCases.Columns[i].ImageKey = ""; 
    if (i == e.Column) 
    { 
     if (m_ListViewColumnSorter.Order == SortOrder.Ascending) 
      m_LVCases.Columns[i].ImageKey = SortOrder.Ascending.ToString(); 
     else if (m_ListViewColumnSorter.Order == SortOrder.Descending) 
      m_LVCases.Columns[i].ImageKey = SortOrder.Descending.ToString(); 
    } 
} 

我无法张贴截图,因为我没有足够的声望。有没有人有解决方案来完全从列标题中删除图标,还是我需要做一些魔术来以另一种方式显示它?

- 编辑 -这是一个我接手的项目,所以我试图把东西拼凑在一起。我发现将该列的ImageKey设置为null,导致所有标题(除了单击的标题)都获得了文件夹图标,这对我来说很奇怪。我试着添加一个新的图标,只有透明的颜色。事实上,这确实清除了所有的图标,但它留下了图标应该出现的空隙。有没有办法将icon-allignment放在右边,所以它不会移动每列的标题文本?

我自己解决了这个问题。我试图将图标放在文本的右侧,但是通过将列的TextAlign属性设置为havning清除imageKey后的任何内容,文件夹图标停止显示。

因此我除去了症状,但我仍然不知道该病是什么。

有一个在MSDN参考的这个漂亮干净的例子here

你在做什么是非常不同的,但有什么可以帮助您是列sortimage的。可见属性设置为false,其他列。

+0

该MSDN引用是针对Webcontrol ListView,它与Winforms ListView控件不同。例如,Winforms ListView没有SortDirection属性或实现Sorting事件。现在我正在响应ColumnClick事件进行排序并根据点击列设置图像。 – 2011-05-10 06:49:02

+0

我查看了ListView列的[imageKey属性](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.columnheader.imagekey.aspx),并且图像应该被删除将imageKey设置为无效值。我做了一个小例子的应用程序,这个工程,所以在我的应用程序中肯定会有一些完全不同的错误。任何人都有一个想法,问题可能在哪里? – 2011-05-10 06:55:08