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

时间:2011-05-09 08:37:45

标签: c# winforms listview icons

我有一个包含多个列的ListView。 ListView的SmallImageList包含三个图标;向上箭头,向下箭头和文件夹图标。单击其中一个列标题时,列表将按该值排序,为了说明这一点,将在标题中插入一个图标,显示其SmallImageList中的向上或向下箭头。这很好用。

我的问题是,当点击要排序的新列时,旧标题中的图标应该消失,但事实并非如此。而是插入文件夹图标。每次单击新标题时都会发生这种情况,因此最终所有标题都填充了文件夹图标。

每当单击一列时,所有列都会被迭代,并且它们的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放在右边,所以它不会移动每一列的标题文本?

2 个答案:

答案 0 :(得分:0)

在MSDN参考here

中有一个相当干净的例子

您正在做的事情是非常不同的,但可能对您有帮助的是将列sortimage的.visible属性设置为false为其他列。

答案 1 :(得分:0)

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

所以我除去了这些症状,但我仍然不知道这是什么病。