티스토리 뷰
반응형
showdialog 를 사용해서 데이터를 넘겨주는 방식에서 다른 방법을 찾던 중
delegate 를 알게 되어 해당 기능에 대해서 확실히 알아둘 겸 포스팅을 시작.
1. 자식폼에서 메인폼으로 데이터를 전달할 때
자식폼
namespace test2
{
public partial class page_sub : **
{
//형에 따라 반환자 str_value 값 설정
//선언된 delegate 의 event 선언
public delegate void page_sub_EventHandler(string str_value);
public event page_sub_EventHandler TextSend;
public void grid_DoubleClick(object sender, EventArgs e)
{
strData = strData.ToString(); // 데이터를 담고 예시문임
TextSend(strData); // 스트링값을 메인폼에게 보내줌
//DialogResult = DialogResult.OK;
}
}
}
public delegate void page_sub_EventHandler(string str_value);
public event page_sub_EventHandler TextSend;
TextSend(strData);
나중에 다시 확인할 수 있도록
각 함수와 변수에 대한 글씨를 맞추어 표시하였다.
부모폼
namespace test1
{
public partial class page_main : **
{
public void btn_Click(object sender, EventArgs e)
{
try
{
//자식 폼
test2 sub = new test2();
//폼에 선언된 event
sub.TextSend += new test2.page_sub_EventHandler(sub_getText);
sub.Show();
}
}
public void sub_getText(string text)
{
// 값을 받아서 처리하는 함수
string data = text; // sub 페이지에서 넘겨받는 값
search_function(data); // 값을 받아 실행할 함수
}
}
}
sub.TextSend += new test2.page_sub_EventHandler(sub_getText);
public void sub_getText(string text)
{
// 값을 받아서 처리하는 함수
string data = text; // sub 페이지에서 넘겨받는 값
search_function(data); // 값을 받아 실행할 함수
}
test2 는 자식 폼 선언
자식폼에 선언된 event 를 가져와 부모폼에 실행할 함수 (sub_getText)를 넣어주면 됨
여기저기 찾아다니면서 delegate 가 정리가 잘 되어 있는 곳이 없고
c#을 시작한지 얼마 되지 않아 많이 어려운 부분이 있었는데,
필요한 부분만 서술하여 나중에 확인할 수 있도록 포스팅 합니다.
반응형
댓글