从Listview列中删除图像

Rob*_*bin 0 .net c# winforms visual-studio-2012

对于ListView我正在使用我自己的图像的列来显示排序是升序还是降序.当我设置column.ImageKey属性时,列的文本向右移动以为图像腾出空间.我遇到的问题是当我不再需要它时如何删除图像.通过设置column.ImageKey = ""column.ImageIndex = -1我删除图像,但文本不在它的起始位置.所以基本上我只是重置了图像对象位图,但我没有删除图像对象本身.所以我想知道如何删除/禁用图像对象.

Ser*_*kiy 5

要从列中删除图像,您需要在删除图像后恢复列的默认文本对齐方式:

column.ImageIndex = -1;
column.TextAlign = HorizontalAlignment.Center;
Run Code Online (Sandbox Code Playgroud)

为什么有帮助?因为当您将图像索引> = 0分配给列标题时,将调用内部跟随方法

ListView.SetColumnInfo(0x10, column);
Run Code Online (Sandbox Code Playgroud)

哪个更改了列的文本对齐方式

lParam.iImage = column.ActualImageIndex_Internal;
lParam.fmt |= 0x800;
lParam.fmt |= column.TextAlign;
UnsafeNativeMethods.SendMessage(new HandleRef(this, Handle), 
     NativeMethods.LVM_SETCOLUMN, column.Index, lParam);
Run Code Online (Sandbox Code Playgroud)

但是当您将图像索引设置为-1时,它不会更改对齐.