C# 자식 폼(Child Form)에서 부모 폼(Parent Form)의 컨트롤 개체 제어 방법

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입니다.

C# 자식 폼(Child Form)에서 부모 폼(Parent Form)의 컨트롤 개체 제어 방법 1

▼ 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를 바꾸는 간단한 예제 입니다.

C# 자식 폼(Child Form)에서 부모 폼(Parent Form)의 컨트롤 개체 제어 방법 2

▶ 자식 폼(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으로 설정해 주기만 하면 다른 폼에서 쉽게 제어가 가능합니다.





이 글이 도움이 되었기를 바랍니다. ^-^


답글 남기기