【问题标题】:Remove images from Listview Columns从 Listview 列中删除图像
【发布时间】:2013-06-28 11:25:10
【问题描述】:

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

【问题讨论】:

  • 是的,它适用于 Windows 窗体

标签: c# .net winforms visual-studio-2012


【解决方案1】:

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

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 时,它不会改变对齐方式。

【讨论】:

  • 谢谢!你有时间解释一下为什么这解决了我的问题吗?
【解决方案2】:

随着 Sergey Berezovskiy 答案的细微变化,当您每列有不同的文本对齐方式时,您也可以这样做;

column.ImageIndex = -1;
column.TextAlign = column.TextAlign;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2020-06-12
    • 2018-03-18
    • 1970-01-01
    • 2010-12-31
    • 2011-05-26
    相关资源
    最近更新 更多