그룹박스의 안에 만들어진 컨트롤에 접근하려면 Controls 메소드를 이용
groupBox.Controls[/*컨트롤의 인덱스 값*/]
와 같이 접근할 수 있다. 하지만 각 컨트롤이 몇번째 인덱스인지 햇갈릴 수 있는데 이 경우 Designer.cs에서 확인하면 된다.
예를 들어 위와같이 그룹 박스 안에 버튼 두개를 만들었다. 그리고 각 버튼의 Text값을 가져오려 한다.
그러려면 각 버튼이 그룹박스의 몇번째 컨트롤인지 확인해야 한다. Designer.cs의 groupBox에 대해 정의된 곳으로 가보면
1 2 3 4 5 6 7 8 9 10 11 | // // groupBox1 // this.groupBox1.Controls.Add(this.방가워여); this.groupBox1.Controls.Add(this.안뇽하세여); this.groupBox1.Location = new System.Drawing.Point(44, 56); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(200, 100); this.groupBox1.TabIndex = 0; this.groupBox1.TabStop = false; this.groupBox1.Text = "그룹 박스"; | cs |
위와 같이 생성되어있다. 여기서 Controls.Add로 추가된 컨트롤들을 보자.
각 컨트롤의 인덱스 값이 몇인지는 나와있지 않지만 대충 코드가 순차적으로 진행된다는 것을 인지하면 가장 첫번째로 만나는 컨트롤에게 인덱스 0번이 부여될 것이라 추측해볼 수 있다.
컨트롤을 드래그 앤 드롭으로 그룹 박스 내에 생성시키면 Designer에는 자동으로 위로 쌓아가며 코드가 추가되기에 만약 별다른 수정을 거치지 않는다면 가장 마지막에 넣은 컨트롤이 인덱스 0번을 갖게 되는 것이다.
아래는 별다른 수정을 거치지 않고 컨트롤의 Text에 접근해 본 것이다.
1 2 3 4 5 6 7 8 9 | private void 안뇽하세여_Click(object sender, EventArgs e) { textBox1.Text = groupBox1.Controls[1].Text; } private void 방가워여_Click(object sender, EventArgs e) { textBox1.Text = groupBox1.Controls[0].Text; } | cs |
마지막에 추가하여 groupBox1의 가장 위쪽에 정의된 "방가워여" 버튼이 Controls[0] 으로 접근 가능한 것을 볼 수 있다.
반응형
'IT > 윈도우 폼' 카테고리의 다른 글
[VS 2013] Timer를 이용한 실시간 시간 출력 (0) | 2018.05.17 |
---|---|
[VS 2013] DateTimePicker로 시간 선택 및 표시 (0) | 2018.05.17 |
[VS 2013] 모달과 모달리스 (0) | 2018.01.30 |
[VS 2013] 폼에서 폼으로 창 바꾸기 (0) | 2017.07.28 |
[VS 2013] 윈폼 애플리케이션 (0) | 2017.07.24 |