본 자료는
1. 컨트롤들의 배열/인덱스 접근 방법
2. 컨트롤들의 배열 접근 C# 예제 코드
순서로 진행합니다.
Visual Studio 2008의 폼에서 여러 개의 컴포넌트의 동일 속성에 접근할 경우 해당 컴포넌트의 속성을 각각 설정해야 하므로 컴포넌트가 수가 많아지면 코딩 양도 함께 증가하는 번거로움이 발생합니다. 이 경우 리스트와 System.Reflection.FieldInfo클래스를 사용하여 폼 내부에 생성된 모든 사용자 인터페이스(UI) 컨트롤(컴포넌트)들을 배열처럼 인덱스 방식의 접근이 가능하여 다수 컴포넌트에 대한 관리가 편리해지며 코딩 양을 많이 줄일 수 있습니다.
컨트롤을 배열로 접근하지 않는 경우 | 컨트롤을 배열로 접근하는 경우 |
---|---|
동적 개체 생성 후 50개의 객체의 속성을 각각 접근 시 50개의 소스 코딩이 필요하며 객체 곱하기 객체의 속성만큼의 소스 코딩이 필요합니다. | 동적 개체 생성 후 50개의 객체 속성을 각각 접근 시 for문으로 50번을 반복하며 각 객체의 속성을 접근 가능하며 객체의 속성만큼의 소스 코딩이 필요합니다. |
smartLabel1.BackGroundColor = Color.Blue; smartLabel2.BackGroundColor = Color.Blue; smartLabel3.BackGroundColor = Color.Blue; smartLabel4.BackGroundColor = Color.Blue; smartLabel5.BackGroundColor = Color.Blue; // ...(중략)... smartLabel46.BackGroundColor = Color.Blue; smartLabel47.BackGroundColor = Color.Blue; smartLabel48.BackGroundColor = Color.Blue; smartLabel49.BackGroundColor = Color.Blue; smartLabel50.BackGroundColor = Color.Blue; |
for (int i = 1; i <= 50; i++) {
// 컴포넌트가 SmartLabel인 경우에 50개의 BackGroundColor 속성값을 다음과 같이 변경 가능
}
("smartLabel" + i).ControlByName<SmartX.SmartLabel>(this).BackGroundColor = Color.Blue; |
컨트롤들의 배열 접근 방식 장/단점
장점 | 단점 |
---|---|
컨트롤의 속성을 동일하게 일괄 적용하는 경우 코딩 양이 감소됩니다. | 각 컨트롤 마다 속성이 동일하지 않는 경우 일괄 접근이 불가하여 코딩 양에 차이가 없습니다. |
2. 컨트롤들의 배열 접근 C# 예제 코드
아래와 같은 사용자 인터페이스 폼에서 여러 개의 컨트롤들의 일괄 접근 방법으로 처리한 결과를 보여주고 있습니다.
소스 코드 상에서 컴포넌트에 설정한 속성(BackGroundColor, TextColor, TextAlign, Text)이 프로그램 실행 시 반영되도록 구현하였습니다. 예제 코드를 참고하시기 바랍니다.