2011-05-09 48 views
2

我有一個ListView與幾列。 ListView的SmallImageList包含三個圖標;向上箭頭,向下箭頭和文件夾圖標。當單擊其中一個列標題時,列表按照該值排序,爲了說明這一點,將一個圖標插入標題中,顯示其SmallImageList中的向上或向下行。這工作正常。ListView圖標未被刪除。以另一種方式顯示?

我的問題是,當點擊一個新的列進行排序時,舊標題中的圖標應該消失,但它不會。而是插入一個文件夾圖標。每次點擊一個新的標題時都會發生這種情況,因此最終所有標題都用文件夾圖標填充。

無論何時單擊列時,所有列都會迭代並將它們的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

我自己解決了這個問題。我試圖將圖標放在文本的右側,但是通過將列的TextAlign屬性設置爲havning清除imageKey後的任何內容,文件夾圖標停止顯示。

因此我除去了症狀,但我仍然不知道該病是什麼。

0

有一個在MSDN參考的這個漂亮乾淨的例子here

你在做什麼是非常不同的,但有什麼可以幫助您是列sortimage的。可見屬性設置爲false,其他列。

+0

該MSDN引用是針對Webcontrol ListView,它與Winforms ListView控件不同。例如,Winforms ListView沒有SortDirection屬性或實現Sorting事件。現在我正在響應ColumnClick事件進行排序並根據點擊列設置圖像。 – 2011-05-10 06:49:02

+0

我查看了ListView列的[imageKey屬性](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.columnheader.imagekey.aspx),並且圖像應該被刪除將imageKey設置爲無效值。我做了一個小例子的應用程序,這個工程,所以在我的應用程序中肯定會有一些完全不同的錯誤。任何人都有一個想法,問題可能在哪裏? – 2011-05-10 06:55:08