首页 文章

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

提问于
浏览
2

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

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

每当单击一列时,所有列都会被迭代,并且它们的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();
    }
}

我还不能发布截图,因为我没有足够的声誉 . 有没有人有完全从列 Headers 中删除图标的解决方案,或者我是否需要做一些魔法以另一种方式显示它?

--Edit-- 这是我接手的一个项目,所以我试图把事情拼凑起来 . 我发现将列的ImageKey设置为 null ,导致所有 Headers (除了单击之一)得到了文件夹图标,这对我来说很奇怪 . 我尝试添加一个只有透明色的新图标 . 事实上,这确实清除了所有图标,但它留下了图标本应存在的空白 . 有没有办法将icon-allignment放在右边,所以它不会移动每列的 Headers 文本?

2 回答

  • 0

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

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

  • 0

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

    所以我删除了症状,但我仍然不知道这是什么病 .

相关问题