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

本文关键字:另一种 方式 显示 图标 视图 删除 删除列 列表 | 更新日期: 2023-09-27 17:55:23

我有一个包含几列的列表视图。列表视图的 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 ,导致所有标题(单击的标题除外)都获得了文件夹图标,这对我来说很奇怪。我尝试添加一个新图标,上面只有透明颜色。这实际上清除了所有图标,但它在图标应该在的地方留下了一个空白。有没有办法将图标对齐放在右侧,这样它就不会移动每一列的标题文本?

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

在MSDN参考中有一个非常干净的例子

正在执行的操作非常不同,但可能对您有所帮助的是将列排序图像的 .visible 属性设置为其他列的 false。

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

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