2013-06-19 5 views
1

내 dataGridView에 여러 열이 포함되어 있습니다. 개별 열을 숨길 수는 있지만 모든 열을 다시 표시 할 수 있어야합니다. for 문을 사용하여이 작업을 수행 할 수 있습니다. 그러나, 나는 foreach와 함께 그것을 할 수 있어야한다고 생각했다. 그러나 구문을 올바르게 처리 할 수는 없습니다. 문DataGridView에서 열을 숨긴 다음 모든 열을 다시 표시합니다.

내 작업 : 나는 foreach 문에서 재판을 무엇

for (int i = 0; i < dataGridView1.Columns.Count; i++) 
{ 
    dataGridView1.Columns[i].Visible = true; 
} 

: 나는 열에 대한 인덱스 값이 필요하다는 것을 이해

foreach (var column in dataGridView1.Columns) 
{ 
    dataGridView1.Columns[column].Visible = true; 
} 

; 그러나 난 그것을 열 값에서 가져 오는 방법을 놓치고있어. 정말로 나를 미치게 만드는 이유는 내가 누락 된 단순한 것을 알고 있다는 것입니다!

사이드 노트에 for 또는 foreach를 사용하는 것이 더 좋습니까? 아니면 하나의 이점이 다른 것보다 실제로 있습니까?

도움 주셔서 감사합니다. 브라이언.

+0

나는 다른 모든 것보다 더 나은 것을 상상할 수는 없지만 아래 Blorgbeard의 대답은 가독성을 위해 승리합니다. –

+0

잘 모르겠지만 .. 당신은 columne.ColumnIndex를 사용하려고 했습니까? – Elior

답변

3
foreach (DataGridViewColumn column in dataGridView1.Columns) 
{ 
    column.Visible = true; 
} 

foreach을 사용하면 개체에서 직접 작업 할 수 있습니다. 이 경우, 유일한 이점은 가독성입니다. 실제로는 int 변수가 필요하지 않습니다. 일반적으로 foreach은 구현을 개별 컬렉션 클래스까지 남겨두기 때문에 더 효율적일 수 있습니다. 물론 가장 효율적인 방법을 알고 있습니다. 예 : Columns 속성이 IEnumerable보다는 IEnumerable<DataGridViewColumn> 또는 유사한를 구현하는 DataGridViewColumnCollection을하기 때문에, 당신은 당신의 변수의 유형을 지정해야합니다 HashSet

참고. var라고 말하면 object이됩니다.

제이크가 구현되기 전에 DataGridView이 설계 되었기 때문입니다.

+0

간단합니다. Blorgbeard 감사합니다! 그것은 매력처럼 작동합니다. – PHBeagle