Computers/Language 2012. 5. 6. 15:44

[C#] 다른폼에서 폼 제어하기

http://choieun.tistory.com/entry/C-%EB%8B%A4%EB%A5%B8%ED%8F%BC%EC%97%90%EC%84%9C-%ED%8F%BC-%EC%A0%9C%EC%96%B4%ED%95%98%EA%B8%B0


C# 폼간 데이터 전달 

[출처] C# 폼간 데이터 전달|작성자 doghole


http://blog.naver.com/PostView.nhn?blogId=doghole&logNo=100124852613


다른폼의 컨트롤에 입력된값 가져오기 

http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=120705&ref=120691




http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=91027&ref=91027

 [답변]음.. 델리게이트를 사용하세요.2008-05-27 오후 4:49:36
한동석 (sence2)  한동석님께 메시지 보내기한동석님을 내 주소록에 추가합니다.한동석님의 개인게시판 가기번호: 91053  

안녕하세요.

 C#에서 클래스 <-> 폼, 또는 폼 <-> 폼 끼리 데이터를 주고 받을때 확실한 방법??은 델리게이트를 사용하는 것입니다.

  

[클래스1]

    // 델리게이트 선언
    public delegate void StrAddHandler(String str);

    class Class1
    {
        // 이벤트 선언
        public static event StrAddHandler ItemStr;

 

        // 폼에서 이곳을 불러내면 이곳에서 폼의 해당 컨트롤에 글자를 추가하거나 표시한다.
        public static void STR()
        {
            ItemStr("abce");
        }
    }

 

[폼1]

        private void Form1_Load(object sender, EventArgs e)
        {
            // 이벤트 핸들러 연결
            Class1.ItemStr += new StrAddHandler(this.strADD);
        }

 

        private void strADD(string str)
        {
            this.Text = str;
        }

 위 소스를 보면 클래스객체를 만들지 않고 델리게이트로 폼1에서 클래스의 내용을 참고할 수 있지요.

위 소스를 좀더 응용하면 폼과 폼끼리 데이터를 자유롭게 주고받을 수 있습니다.

 

그리고 아주 확실한 방법을 찾으시는 듯 한데 확실한 방법이란?

자신이 개발하는 프로그램의 규모 및 구조에 따라 다릅니다.

 

대충 프로그램의 구조가 간단하다면 C++과 마찬가지로 this로 넘기는게 효과적입니다. 가독성도 그렇지요.

여러명에서 상당히 구조적인 프로그램 작업시엔 인터페이스및 델리게이트를 사용하는 것이 효과적입니다.

 

만약 MDI같은 구조.. 부모폼 위에 자식폼들이 노는 구조라면 델리게이트를 이용하는 것이 효과적입니다. 또는 this 넘기세요.

 

머 정확한 답은 없다 입니다. ^^

posted by 털보네i
: