는 I는 다음과 같이 (즉, 데이터 테이블/데이타베이스에 결합되지 않은) 프로그래밍 된 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
I 찾은 내 열 가끔이 방법을 사용하여 순서가 시각적 있음. 해결 방법은 나중에 열의 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
제 생각에는 그리드의 열 수를 동적으로 늘릴 수 있습니다. 나는 그것을 청크 (chunk) 단위로 자라려고했기 때문에 각 삽입은 열 할당 (및 연관된 초기화)을 필요로하지 않았다. 그 다음에 "new"열은 끝에 사용되지 않은 열을 가져 와서 원하는 위치에 삽입하고 표시함으로써 추가됩니다.
또한 기본 Columns 데이터 구조와 DisplayIndex 사용에서 표시 순서가 분리되어 있기 때문에 열을 청크로 추가하여 최적화 할 필요가 없으며 사물을 복잡하게 만 만들 수 있습니다. – cfeduke