상황1. DataGridView 의 Source 데이터가 바인딩 되지 않고, 직접 데이터를 추가한 경우.
DataGridView의 선택된 행을 삭제하려고 했다. 별 거 없겠지 하고 무심히 아래와 같이 코딩하였다.
int selectedRowCount = dgvList.SelectedRows.Count;
for (int tmpIndex = 0; tmpIndex < selectedRowCount; tmpIndex++)
dgvList.Rows.Remove(dgvList.SelectedRows[tmpIndex]);
별 거 있더군.. 10개 지웠는데 4개만 지워지고, 가끔 예외도 발생하고.. 모야~
for 반복문으로 DataGridView의 행이 삭제될 때마다 DataGridView의 Rows, SelectedRows 등 정보가 변경된다.
Remove 메소드 인수로 DataGridViewRow를 전달하게 되어있으므로 처음부터 SelectedRows 를 따로 가지고 있다 전달해서 삭제하였다.
DataGridViewSelectedRowCollection selectedRows = dgvList.SelectedRows;
for (int tmpIndex = 0; tmpIndex < selectedRowCount; tmpIndex++)
dgvList.Rows.Remove(selectedRows[tmpIndex]);
*) Windows Forms DataGridView 컨트롤에서 선택한 셀, 행 및 열 가져오기
*) .NET Framework 3.5
*) Visual Studio Team System 2008 SP1