상황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

 
Posted by six605
,