我插入在一個DataGridView列編程(即,不束縛於任何數據表/數據庫)如下:爲什麼Columns.Insert不更新DataGridView(C#)中的DisplayIndex?
int lastIndex = m_DGV.Columns.Count - 1; // Count = 4 in this case
DataGridViewTextBoxColumn col = (DataGridViewTextBoxColumn)m_DGV.Columns[lastIndex];
m_DGV.Columns.RemoveAt(lastIndex);
m_DGV.Columns.Insert(insertIndex, col); // insertIndex = 2
我發現我的列是視覺上無序有時採用這種方法。解決方法是之後手動設置列的DisplayIndex屬性。添加這個代碼「修復它」,但我不明白爲什麼它的行爲如此。
Console.Write(m_DGV.Columns[0].DisplayIndex); // Has value of 0
Console.Write(m_DGV.Columns[1].DisplayIndex); // Has value of 1
Console.Write(m_DGV.Columns[2].DisplayIndex); // Has value of 3
Console.Write(m_DGV.Columns[3].DisplayIndex); // Has value of 2
col.DisplayIndex = insertIndex;
Console.Write(m_DGV.Columns[0].DisplayIndex); // Has value of 0
Console.Write(m_DGV.Columns[1].DisplayIndex); // Has value of 1
Console.Write(m_DGV.Columns[2].DisplayIndex); // Has value of 2
Console.Write(m_DGV.Columns[3].DisplayIndex); // Has value of 3
另外,我的網格可以動態增加列數。我想將它擴大成塊,因此每個插入不需要列分配(和相關的初始化)。然後通過從末端抓取未使用的列,將其插入到所需的位置並使其可見,從而添加每個「新」列。
此外,由於底層Columns數據結構的分離以及DisplayIndex用法的顯示順序,因此不需要通過在塊中添加列來進行優化,這可能會使事情變得複雜。 – cfeduke 2008-10-22 21:59:02