我有一個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放在右邊,所以它不會移動每列的標題文本?
該MSDN引用是針對Webcontrol ListView,它與Winforms ListView控件不同。例如,Winforms ListView沒有SortDirection屬性或實現Sorting事件。現在我正在響應ColumnClick事件進行排序並根據點擊列設置圖像。 – 2011-05-10 06:49:02
我查看了ListView列的[imageKey屬性](http://msdn.microsoft.com/zh-cn/library/system.windows.forms.columnheader.imagekey.aspx),並且圖像應該被刪除將imageKey設置爲無效值。我做了一個小例子的應用程序,這個工程,所以在我的應用程序中肯定會有一些完全不同的錯誤。任何人都有一個想法,問題可能在哪裏? – 2011-05-10 06:55:08