VS 2008/C#을 사용하고 DataGridView 컨트롤의 DataSource로 도우미 클래스의 로컬 목록을 바인딩합니다. 내 헬퍼 클래스 목록에서 Remove() 메서드를 호출하면 DataGridView의 CellFormatting 이벤트가 발생합니다.이 이벤트는 의미가 있습니다.마지막 행 제거 데이터 바인딩 DataGridView C#
그리드의 마지막 행에있는 DataBoundItem (그리드에 둘 이상의 행이있는 한)을 제거하면이 이벤트가 발생하기 전에 DataGridView의 Rows 컬렉션이 업데이트되지 않습니다. 그래서 CellFormatting 이벤트 핸들러에서 행 컬렉션이 너무 커서 IndexOutOfRangeException이 발생합니다.
DataGridView.Rows.Remove() 메서드를 사용하여 행을 제거하고 List를 데이터 소스로 직접 바인딩하지 않고 BindingSource를 사용하여 바인딩을 시도했습니다.
Google을 통해이 발생에 대한 몇 가지 참조를 찾았지만 응답이 없거나 DataGridView 또는 DataGridView.Rows 컬렉션에서 Delete() 메소드를 사용한다고 응답하지 않았습니다. 현재 존재하지도 않습니다.
정렬 작업을 수행하거나 수행하지 않을 때 동일한 결과가 발생하므로 정렬이 문제가되지 않습니다.
"마지막 행"에 대한 유일한 예외는 DataGridView에 행이 하나만있는 경우입니다.이 경우 모든 것이 정상적으로 작동합니다.
null로 설정하고 컬렉션으로 돌아 가기. – Pat
미친 오래된 질문에 대한 예외 답변. :-) 나는 그 당시 성공하지 못한 채 제안을 시도했다고 믿는다. 그러나 그것은 다른 사람들을 위해 일한 것으로 보인다. –