2013-12-23 25 views
0

我被卡住了。 我想在用戶重新排序(通過鼠標移動列)時獲取列的新位置。 到目前爲止:如何在記錄listview列時獲取新的列標題並顯示索引?

private void listView1_ColumnReordered(object sender, ColumnReorderedEventArgs e) 
{ 
    foreach (ColumnHeader cHeader in listView1.Columns) 
    { 
     MessageBox.Show(cHeader.Text + cHeader.DisplayIndex.ToString()); 
    } 
} 

我有一個事件時,列表視圖列重新排列。 但是,消息框會顯示其他情況,因爲列是按照重新排序之前的內容記錄的。 我很困難。誰能幫我? 我只想在移動時獲取列的新位置及其顯示索引,而不是以前的配置。

+0

'DisplayIndex'值是他們以前的值? –

+0

嗨,我有一個4列。標題,名稱,地址,年齡。分別顯示索引0,1,2,3。當用上面的代碼重新排序時,給出相同的顯示索引(當名稱應該是0,標題,1,地址2,年齡3)時,再次重新排序給了我那些索引(不是新的)等。 – josht

回答

0

ListView.ColumnReordered事件在用戶重新排列列之後但在對列進行實際重新排序之前觸發。如果需要,也可以通過將ColumnReorderedEventArgs參數的Cancel屬性設置爲true來取消列重新排序。

因爲事件在實際重新排序前發生,所以當您在代理中查看此事件的DisplayIndex屬性時,您將始終獲得以前的列索引。請參閱ColumnReorderedEventArgs參數的OldDisplayIndexNewDisplayIndex。這會告訴你該列的上一個索引以及該列的新索引是什麼 - 如果不取消該事件。

+0

感謝您對事件的見解。我將使用ColumnReorderedEventArgs參數的NewDisplayIndex。 – josht

相關問題