yoursyun

폼간의 이벤트 제어 본문

program/c#

폼간의 이벤트 제어

yoursyun 2012. 12. 17. 19:49

Delegate 를 통하여 폼간의 이벤트 제어를 하는 법.
시나리오 부모 폼에서 이벤트를 발생하여, 자녀 폼의 이벤트를 실행.

아래 예제는 간단한 문자열을 부모폼에서 넘겨 자녀의 레이블에 출력 하는 예제.

부모Form 클래스
{
        // delegate 이벤트선언
        public delegate void FormSendDataHandler(string data);
        public event FormSendDataHandler FormSendEvent;

        void btn_Click(object sender, EventArgs e)
        {  
            this.FormSendEvent("부모폼에서 버튼을 클릭하였습니다.");
        }

        void 자녀폼열기_Click(object sender, EventArgs e)
        {  
           Form2 f2 = new From2(this); // 부모를 통째로 날려 보내 참조를 만든다.
           f2.Show();
        }
}

자녀Form 클래스
{
       public Form2(Form1 f)
       {
             // Form 1의 delegate 에 이벤트 메서드 등록
             f.FormSendEvent += new Form1.FormSendDataHandler(f_FormSendEvent);
       }
       void f_FormSendEvent(string data)
       {
            부모로부터받은문자열.Text = data;
       }
}

실행하여 자녀폼열기 버튼을 클릭한후 명령 버튼을 클릭하면 "부모폼에서 버튼을 클릭하였습니다."
문자열을 출력 한다.

-_-; 어... 쓰고 나니 쉽네... 난 왜이리 오래 걸렸지 으흑....

반응형