C# 예제 1. 자식폼 종료 시, 부모폼으로 데이터 전송
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // main form to read data set in child form / dialog public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DraftForm form = new DraftForm(); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { textBox1.Text = form.DraftNumber; } } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | // another form where data is read from public partial class DraftForm : Form { public DraftForm() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { DialogResult = System.Windows.Forms.DialogResult.OK; } public string DraftNumber { get { return this.textBox1.Text; } } } | cs |
C# 예제 2. 자식폼만 활성화, 부모폼으로 여러 데이터를 전송할 때
1 2 3 4 5 6 7 8 9 10 11 12 | [자식폼] // delegate 이벤트선언 public delegate void FormSendDataHandler(object obj); public event FormSendDataHandler FormSendEvent; // 창을 닫을 때 FormSendEvent 이벤트를 실행한다. 파라미터로 object 를 하나 넘긴다. private void btnFormClose_Click(object sender, EventArgs e) { int no = cboDisSystem.SelectedIndex; this.FormSendEvent(disSystemNo[no]); this.Dispose(); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [부모폼] // 자식폼을 실행할 때 자식폼에 설정되어있는 이벤트에 DieaseUpdateEventMethod // 실행할 메소드명을 등록한다. 자식폼에서 이벤트를 실행하면 이 메소드가 실행될것이다. private void btnReasonAdd_Click(object sender, EventArgs e) { FrmAdd frm = new FrmAdd (); frm.FormSendEvent += new FrmAdd.FormSendDataHandler(DieaseUpdateEventMethod); frm.ShowDialog(); } private void DieaseUpdateEventMethod(object sender) { Console.WriteLine("이벤트 실행"); } | cs |
C# 예제 3. 많은 폼이 활성화된 상태, 상호 유기적인 데이터 교환을 원할 때 (추천)
1 2 3 4 | public interface IMyInterface { void SetData(String Data); } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public partial class Form1 : Form, IMyInterface { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 frm = new Form2(this as IMyInterface); frm.Show(); } public void SetData(String Data) { textBox1.Text = Data; } } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public partial class Form2 : Form { private IMyInterface frm = null; public Form2(IMyInterface frm) { InitializeComponent(); this.frm = frm; } private void button1_Click(object sender, EventArgs e) { frm.SetData(textBox1.Text); } } | cs |
출처: http://codingcoding.tistory.com/545 [코딩 기록]
'개발 > C#' 카테고리의 다른 글
[그래프] C# 속도계 (Gage) (0) | 2018.04.25 |
---|---|
[그래프] C# 실시간 그래프 (2) | 2018.04.25 |
[팁] 델리게이트, 폼간 데이터 공유(주거니 받거니) (0) | 2018.04.16 |
[팁] 이벤트, 폼간 데이터 공유 (0) | 2018.04.16 |
C# Resource 이미지 로드 (0) | 2018.04.03 |
Dialog Boxes In C# (0) | 2018.03.20 |
[DataGirdview] 더블 버퍼링 (0) | 2018.02.23 |
[이미지] C# Picture 박스에서 다른 Picture 박스로 이미지 끌어다 놓기 (0) | 2018.02.13 |