对于 a 中的列,ListView
我使用自己的图像来显示排序是升序还是降序。当我设置column.ImageKey
属性时,列的文本向右移动以为图像腾出空间。我遇到的问题是当我不再需要图像时如何删除它。通过设置column.ImageKey = ""
和column.ImageIndex = -1
我删除图像,但文本不在它的起始位置。所以基本上我只是重置了图像对象位图,但我没有删除图像对象本身。所以我想知道如何删除/禁用图像对象。
问问题
2136 次
2 回答
6
要从列中删除图像,您需要在删除图像后恢复列的默认文本对齐方式:
column.ImageIndex = -1;
column.TextAlign = HorizontalAlignment.Center;
为什么有帮助?因为当您将图像索引> = 0分配给列标题时,内部会调用以下方法
ListView.SetColumnInfo(0x10, column);
这会改变列的文本对齐方式
lParam.iImage = column.ActualImageIndex_Internal;
lParam.fmt |= 0x800;
lParam.fmt |= column.TextAlign;
UnsafeNativeMethods.SendMessage(new HandleRef(this, Handle),
NativeMethods.LVM_SETCOLUMN, column.Index, lParam);
但是当您将图像索引设置为 -1 时,它不会改变对齐方式。
于 2013-06-28T11:50:00.340 回答
2
随着 Sergey Berezovskiy 答案的细微变化,当每列有不同的文本对齐方式时,您也可以这样做;
column.ImageIndex = -1;
column.TextAlign = column.TextAlign;
于 2018-03-08T15:09:27.487 回答