C# WinForm 프로젝트를 개발할 때 하나의 폼만 만드는 경우는 거의 없고, 대부분 여러 개의 폼을 만들어 서로 유기적으로 폼을 사용하게 됩니다.
서로 다른 폼 간에 데이터를 주고 받는 것은 그렇게 어렵지 않습니다.
생성자에서 필요한 데이터 값을 받을 수 있고, public static 변수를 사용하여 자유롭게 변수 값을 입력해서 사용할 수도 있습니다.
하지만 변수나 데이터 값이 아닌 다른 폼에 있는 컨트롤 개체의 속성을 변경하고자 한다면 어떻게 하면 될까요?
예를 들어 Form2라는 자식 폼(Child Form)에서 버튼을 클릭하면 Form1이라는 부모 폼(Parent Form)의 TextBox의 Text를 변경하거나 Font의 속성을 변경해야 한다면 어떻게 처리해야 할 지 약간의 고민이 생기게 됩니다.
이번 글에서는 C# 자식 폼(Child Form)에서 부모 폼(Parent Form)의 컨트롤 개체 제어 방법에 대해 알아보겠습니다.
다른 폼의 컨트롤 개체 제어 – 부모 폼(Parent Form) 작성
▶ 먼저 부모 폼(Panrent Form)에 대한 디자인과 코드 입니다.
1. 간단하게 자식 폼(Child Form)을 여는 버튼 1개와 텍스트박스(TextBox) 1개가 있는 간단한 디자인입니다.
2. 중요) 자식 폼에서 부모 폼의 TextBox 컨트롤을 제어하기 위해 개체의 표시 수준을 나타내는 Modifiers 속성을 Public으로 설정해 줍니다. 디폴트는 Private입니다.
▼ Parent Form(Form1)의 코드 내용입니다.
- 자식 폼 Form2를 열 때 Form2의 생성자에 Form1 자기 자신을 넘겨줍니다.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
//자식 폼 열기
Form2 form2 = new Form2(this); //Form1 자기 자신을 넘겨줌
//form2.Show();
form2.ShowDialog();
}
}
|
다른 폼의 컨트롤 개체 제어 – 자식 폼(Child Form) 작성
▶ 자식 폼(Child Form)의 디자인과 코드 입니다.
1. 테스트를 위해 자식 폼(Child Form)에는 버튼 하나만 추가했습니다.
2. 버튼을 클릭하면 부모 폼의 TextBox의 Text를 바꾸는 간단한 예제 입니다.
▶ 자식 폼(Form2)의 코드 내용입니다.
- Form1을 선언하고, 생성자에 받은 Form1을 선언한 폼에 넣고 사용하면 됩니다.
public partial class Form2 : Form
{
Form1 parentForm = null;
public Form2(Form1 pForm)
{
InitializeComponent();
parentForm = pForm;
}
private void button1_Click(object sender, EventArgs e)
{
parentForm.textBox1.Text = “자식 폼(Form2)에서 버튼 클릭했습니다.”;
}
}
|
마무리
서로 다른 폼(WinForm) 간에 컨트롤 개체를 사용하는 방법은 의외로 간단합니다.
다른 폼에서 사용할 컨트롤 개체에 대해 Modifiers 속성을 Public으로 설정해 주기만 하면 다른 폼에서 쉽게 제어가 가능합니다.
※ 함께 읽으면 도움이 될 만한 다른 포스팅 글입니다.
- C# 오랜 시간 실행되는 Windows Form의 이벤트 중간에 다른 폼의 이벤트를 실행 하는 방법
- C# 윈폼(WinForms)에서 시작 및 종료 이벤트 순서 설명
- C# 윈폼에서 동일한 폼이 열려 있는지 확인하는 예제와 열려 있는 모든 폼을 닫는 예제
- C# 문자열에서 영문자만, 숫자만 또는 영문숫자만 남기고 나머지는 제거하는 3가지 방법 및 성능 비교
- C# 윈폼 크기에 따라 반응형으로 크기가 자동 조절되는 Panel 및 Grid Control 구현 방법
- C# 윈폼에서 이미지 컨트롤을 구현할 때 다른 컨트롤의 배경을 투명하게 설정 하는 방법
이 글이 도움이 되었기를 바랍니다. ^-^