2015-05-05 57 views
0

我一直在尋找其他交併從該柱使用時的代碼[環通過datagridview的柱,並檢查複選框] [1]循環通過的DataGridView顯示集管

[1]已找出:loop through datagridview column and check checkbox和其他的或我想出的代碼

string cName; 
int i; 

foreach (DataGridViewColumn c in Results.Columns) 
{ 
    cName = c.DisplayIndex.ToString(); 
    i = Int32.Parse(cName); 

    MessageBox.Show(c.HeaderText); 
} 

這不會循環顯示。所以我所做的就是打開AllowUserToReorderColumns,當他們移動一列時,我想循環顯示列,並用新順序顯示一個顯示列名稱的消息框。

正如你可以告訴我,我已經找到了displayIndex proptery,但我不知道如何使用它。

回答

2

你的代碼只是按照它添加的順序遍歷列。它不會與列顯示的順序相同。

您需要按顯示順序對列進行排序。你可以使用Linq的OrderBy方法和DisplayIndex屬性來完成。您也可以選擇過濾隱藏的列。

var columnsInDisplayOrder = Results.Columns 
    .Cast<DataGridViewColumn>() 
    .Where(x => x.Visible) 
    .OrderBy(x => x.DisplayIndex); 

foreach (DataGridViewColumn c in columnsInDisplayOrder) 
{ 
    MessageBox.Show(c.HeaderText); 
} 
+0

您可能要添加。凡(X => x.Visible)以及因爲這種代碼顯示隱藏的列 – danish

+0

@danish是的,你說得對。更新了我的答案。謝謝! –

+0

你能解釋一下嗎?我不明白爲什麼這是行得通的? – user3120232