'폼간 데이터'에 해당되는 글 1건

  1. 2010.04.02 C# 폼간 데이터 전송(부모 자식간 데이터 전송) (4) by 아르다

아..다 작성 한뒤에 편집하다가 한번 날려먹었습니다.
정말 짜증나네요 ㅎ
제가 이글을 남기는 이유는 제가 머리가 나빠서 다음에 또 써먹을려고 하면 항상 기억이 나질 않는 바보라서요 ㅎ
제 블로그는 그런이유로 남겨져있는 것입니다.ㅎ

데이터 전송은 간단합니다. 어렵게 생각하시는 분들이 많으신데 전혀 어렵게 생각 안하셔도 됩니다.
지금 포스트만 한번 보셔도 모든 것을 이해하게 되실 겁니다 ㅎ

1. 부모폼이 로드되면서 자식폼이 로드되도록 합니다.(이건 쉽게 하려고 하는 것이니 안따라 하셔도 됩니다)
        private void Form1_Load(object sender, EventArgs e)        {            Child child = new Child();            child.Show();        }

2. 부모창의 버튼을 클릭하면 부모창의 텍스트박스 내용이 자식폼의 라벨의 텍스트에 전송되도록 합니다.
아주 간단합니다. 괜히 욕하지마세요..;ㅠ
        private void button1_Click(object sender, EventArgs e)        {            child.label1.Text = textBox1.Text;        }
간단하죠?ㅎ 그럴줄 알았습니다.ㅠ
하지만 위 코드를 사용하기 위해서는 먼저 자식폼의 라벨의 Modifiers를 private에서 public로 변경하셔야 합니다.
부모에서 자식으로 데이터 전송하는 법은 이것으로 끝이네요. 정말 간단하죠?

자식에게서 부모로 데이터를 전송하는 방법을 설명 할 것입니다.
부모는 자식에게 아무런 제약없이 보낼 수 있지만 자식은 허락을 받아야 합니다.
가부장적인 가정에서 부모는 자식에게 ‘이거 해’ 라고 하지만,
자식은 부모에게 ‘이거 해도 될까요?’라고 허락을 받게 되죠.(예가 좀 틀린가요?;)
같다고 보시면 됩니다.

자식 : 제가 드릴 데이터가 있는데 받으시겠어요?
부모 : 그래 보내보렴.

이렇게 부모에게 허락을 받아야만 전송을 할 수 있게 됩니다.

3. 자식이 부모에게 전송할 수 있도록 델리게이트와 이벤트를 만듭니다.
// 자식폼에서public delegate void sendMsgDele(string msg);public event sendMsgDele sendMsg;                                   …private void button1_Click(object sender, EventArgs e){sendMsg(textBox1.Text);}
버튼을 클릭시 이벤트를 통해서 자식폼의 텍스트를 부모창으로 보내게 될 것입니다.

4. 허락요청을 보내게 되니 이제 부모폼에서 허락을 받아 출력을 하는 부분입니다.
        private void Form1_Load(object sender, EventArgs e)        {            Child child = new Child();            child.sendMsg += new Child.sendMsgDele(ChildSendMsg);            child.Show();        }        private void ChildSendMsg(string msg)        {            label1.Text = msg;        }
폼로드에서 중간에 한줄을 추가합니다 이벤트를 등록하는 것이지요.
ChildSendMsg라는 메소드를 추가하고 부모폼의 라벨에 자식이 보내온 데이터를
출력 하도록 합니다.
간단하죠?간단합니다.ㅎ

마지막으로 부모폼과 자식폼의 전체코드입니다.

부모
public partial class Form1 : Form{      public Form1()      {            InitializeComponent();      }      private void Form1_Load(object sender, EventArgs e)      {            Child child = new Child();            child.sendMsg += new Child.sendMsgDele(ChildSendMsg);            child.Show();      }      private void ChildSendMsg(string msg)      {            label1.Text = msg;      }      private void button1_Click(object sender, EventArgs e)      {                    child.label1.Text = textBox1.Text;      }}

자식
public partial class Child : Form{      public delegate void sendMsgDele(string msg);      public event sendMsgDele sendMsg;      public Child()            {            InitializeComponent();      }      private void button1_Click(object sender, EventArgs e)      {            sendMsg(textBox1.Text);      }}

※ 소스는 얼마든지 복사해가도 됩니다.그래서 복사기능 막지 않았으니깐요.
    그래도 가져가실때는 말이라도 좀 하고 가져가시고 트랙백을 남겨주시든 해주세요.
 
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by 아르다

댓글을 달아 주세요

  1. 좋은자료 감사합니다~

  2. Form1_Load 함수에서 생성된 지역객체인 Child 폼이 button1_Click 함수에서 어떻게 호출 될 수 있나요?

  3. 비밀댓글입니다

티스토리 툴바