我有一个包含多个列的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放在右边,所以它不会移动每一列的标题文本?
答案 0 :(得分:0)
在MSDN参考here
中有一个相当干净的例子您正在做的事情是非常不同的,但可能对您有帮助的是将列sortimage的.visible属性设置为false为其他列。
答案 1 :(得分:0)
所以我除去了这些症状,但我仍然不知道这是什么病。