loading

프로그래밍/C#

C# 부모폼과 자식폼간 데이터 전달

침착곰 2021. 4. 14. 11:35
반응형

안녕하세요.

 

C#의 윈폼에서 부모폼과 자식폼간의 데이터를 전달하는 방법에 대해서 알아보겠습니다.

부모폼에서 자식폼으로 데이터를 전달할 때는 자식폼을 호출할 때 파라미터를 추가하여 부모폼의 데이터를 자식폼으로 넘겨주는 방식으로 개발했습니다.

반대로 자식폼에서 부모폼으로 데이터를 전달할 때는 Owner를 사용해서 전달하는 방식으로 개발했습니다.

이제 설명시작하겠습니다.

 

1. 최종 소스

DataTran.zip
0.22MB

 

2. 디자인

 먼저 디자인을 그려줍니다.

디자인은 부모폼과 자식폼 동일하게 전송 데이터/수신 데이터를 넣고 전송버튼을 사용하여 데이터를 송수신하도록 구현했습니다.

 - 부모폼

 

 - 자식폼

 

 

3. 부모폼 소스

 소스 코드에 대한 설명은 주석으로 대체하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace DataTran
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
 
        // 데이터를 수신할 전역변수 선언
        public string ReceivedData;
 
        // 전송버튼 클릭 이벤트
        private void btnSend_Click(object sender, EventArgs e)
        {
            // 자식 폼을 호출하면서 txt데이터를 전송한다.
            ChildForm childForm = new ChildForm(txtSend.Text);
 
            // 자식폼의 Owner를 선언
            childForm.Owner = this;
 
            // 자식폼에서 전송한 데이터를 받는다.
            if (childForm.ShowDialog() == DialogResult.OK)
            {
                txtReceive.Text = ReceivedData;
            }
        }
    }
}
 
cs

 

 4. 자식폼 소스

 마찬가지로 소스 코드에 대한 설명을 주석으로 대체하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
namespace DataTran
{
    public partial class ChildForm : Form
    {
        // 데이터를 수신할 전역변수 선언
        string ReceivedData;
 
        public ChildForm(string Data)
        {
            InitializeComponent();
 
            // 부모폼에서 데이터를 받아 전역변수에 넣는다.
            ReceivedData = Data;
        }
 
        // 폼 로드 시 이벤트
        private void ChildForm_Load(object sender, EventArgs e)
        {
            // 부모폼에서 받은 데이터를 텍스트박스에 넣는다.
            txtReceive.Text = ReceivedData;
        }
        
        // 전송버튼 클릭 이벤트
        private void btnSend_Click(object sender, EventArgs e)
        {
            // 다이얼로그 결과 Ok를 넘긴다.
            DialogResult = DialogResult.OK;
 
            // 부모폼을 호출
            Form1 form1 = (Form1) Owner;
            form1.ReceivedData = txtSend.Text;
 
            // 팝업 닫기
            this.Close();
        }
    }
}
cs

 

여기까지 부모/자식폼간의 데이터 송수신 방법에 대해서 알아보았습니다.

C# 개발에 도움이 되셨으면 좋겠습니다.

반응형
그리드형