2013-06-28 28 views
0

對於ListView中的列,我使用自己的圖像來顯示排序是升序還是降序。當我設置column.ImageKey屬性時,該列的文本被移動到右側以爲圖像騰出空間。我遇到的問題是當我不再需要它時如何去除圖像。通過設置column.ImageKey = ""column.ImageIndex = -1我刪除了圖像,但文本不在其起始位置。所以基本上我只是重置圖像對象位圖,但我不刪除圖像對象本身。所以我想知道如何刪除/禁用圖像對象。從列表視圖列中刪除圖像

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

爲什麼它幫助:

+0

它是winforms嗎? –

+0

是的,它是Windows窗體 – Robin

回答

5

從您需要恢復列的默認文本對齊列你去除圖像之後刪除圖像?因爲當要分配圖像索引> = 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。

+0

謝謝!你有沒有時間來解釋爲什麼這解決了我的問題? – Robin

+0

@Robin當然,用Reflector中的一些代碼更新 –

0

在Sergey Berezovskiy答案稍有變化時,如果每列有不同的文本對齊方式,您也可以這樣做;

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