C# 폼간 데이터 전송(부모 자식간 데이터 전송)
C#/Tip :
2010. 4. 2. 16:42
아..다 작성 한뒤에 편집하다가 한번 날려먹었습니다.
정말 짜증나네요 ㅎ
제가 이글을 남기는 이유는 제가 머리가 나빠서 다음에 또 써먹을려고 하면 항상 기억이 나질 않는 바보라서요 ㅎ
제 블로그는 그런이유로 남겨져있는 것입니다.ㅎ
데이터 전송은 간단합니다. 어렵게 생각하시는 분들이 많으신데 전혀 어렵게 생각 안하셔도 됩니다.
지금 포스트만 한번 보셔도 모든 것을 이해하게 되실 겁니다 ㅎ
1. 부모폼이 로드되면서 자식폼이 로드되도록 합니다.(이건 쉽게 하려고 하는 것이니 안따라 하셔도 됩니다)
2. 부모창의 버튼을 클릭하면 부모창의 텍스트박스 내용이 자식폼의 라벨의 텍스트에 전송되도록 합니다.
아주 간단합니다. 괜히 욕하지마세요..;ㅠ
하지만 위 코드를 사용하기 위해서는 먼저 자식폼의 라벨의 Modifiers를 private에서 public로 변경하셔야 합니다.
부모에서 자식으로 데이터 전송하는 법은 이것으로 끝이네요. 정말 간단하죠?
자식에게서 부모로 데이터를 전송하는 방법을 설명 할 것입니다.
부모는 자식에게 아무런 제약없이 보낼 수 있지만 자식은 허락을 받아야 합니다.
가부장적인 가정에서 부모는 자식에게 ‘이거 해’ 라고 하지만,
자식은 부모에게 ‘이거 해도 될까요?’라고 허락을 받게 되죠.(예가 좀 틀린가요?;)
같다고 보시면 됩니다.
자식 : 제가 드릴 데이터가 있는데 받으시겠어요?
부모 : 그래 보내보렴.
이렇게 부모에게 허락을 받아야만 전송을 할 수 있게 됩니다.
3. 자식이 부모에게 전송할 수 있도록 델리게이트와 이벤트를 만듭니다.
4. 허락요청을 보내게 되니 이제 부모폼에서 허락을 받아 출력을 하는 부분입니다.
ChildSendMsg라는 메소드를 추가하고 부모폼의 라벨에 자식이 보내온 데이터를
출력 하도록 합니다.
간단하죠?간단합니다.ㅎ
마지막으로 부모폼과 자식폼의 전체코드입니다.
※ 소스는 얼마든지 복사해가도 됩니다.그래서 복사기능 막지 않았으니깐요.
그래도 가져가실때는 말이라도 좀 하고 가져가시고 트랙백을 남겨주시든 해주세요.
정말 짜증나네요 ㅎ
제가 이글을 남기는 이유는 제가 머리가 나빠서 다음에 또 써먹을려고 하면 항상 기억이 나질 않는 바보라서요 ㅎ
제 블로그는 그런이유로 남겨져있는 것입니다.ㅎ
데이터 전송은 간단합니다. 어렵게 생각하시는 분들이 많으신데 전혀 어렵게 생각 안하셔도 됩니다.
지금 포스트만 한번 보셔도 모든 것을 이해하게 되실 겁니다 ㅎ
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); }}
※ 소스는 얼마든지 복사해가도 됩니다.그래서 복사기능 막지 않았으니깐요.
그래도 가져가실때는 말이라도 좀 하고 가져가시고 트랙백을 남겨주시든 해주세요.
'C# > Tip' 카테고리의 다른 글
C# SQLITE API (0) | 2010.08.12 |
---|---|
C# 클라이언트 TCP Network Class (0) | 2010.08.03 |
C# 형변환시 변환유무 확인하기 (0) | 2010.03.26 |
c# 네트워크프로그래밍 기초... (0) | 2009.12.30 |
c# invoke 활용시 확장성있게~ (0) | 2009.12.30 |