2010-12-01 2 views
2

나는 창 형태로 DataGridView 컨트롤에서 선택한 행의 열 이름에 액세스하기 위해 노력하고있어,하지만 난 다음 코드의 ArgumenOutOfRange 예외 받고 있어요 :ArgumentOutOfRange 예외

MessageBox.Show(dataGridView1.SelectedColumns[dataGridView1.CurrentCell.ColumnIndex].ToString()); 

가 생산 :

ArgumentOutOfRangeException was unhandled 

Index was out of range. Must be non-negative and less than the size of the collection. 
Parameter name: index 

아무도이 오류에서 어떻게 극복 할 수 있습니까?

답변

0

DataGridView.SelectedColumns 컬렉션은 DataGridView.Columns로부터 분리 수거하고 컬럼의 다른 세트 (서브 세트)를 가질 수있다. 다음, 세 번째와 네 번째는 선택된 5 열의 볼을 가지고, 예를 들어

,

DataGridView.SelectedColumns.Count == 2 
DataGridView.Columns.Count == 5 

당신의 네번째 컬럼 (3 인덱스) 코드가

된다를 사용
DataGridView.SelectedColumns[3] 

(바로) IndexOutOfBounds로 불어납니다.

귀하의 경우, SelectedColumns가 아닌 Columns 속성을 사용해야합니다.

+0

답장을 보내 주셔서 감사합니다. – SauDard

0

ColumnIndex 속성 돌아갈 수 -1 (문서에서)

셀이 포함 된 칼럼의 인덱스; 셀이 이 아닌 경우 -1입니다.

이 경우에 해당 할 수 있습니다.

1

내가 잘못하지 않았다면 아마도 Columns 컬렉션에서 열 값을 가져오고 SelectedColumns 컬렉션에서 가져 오지 않았을 것입니다.

dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex] 
4

SelectedColumns은 선택한 열만 포함하는 목록입니다 (예, 작동 방식입니다). 따라서이 목록의 크기는 Columns 속성 목록의 크기와 다릅니다 (분명히 원하는 것입니다).

MessageBox.Show(dataGridView1.Columns[dataGridView1.CurrentCell.ColumnIndex].ToString()); 
+0

+1 나를 이길 =) – bitxwise