달력

52024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

MDI를 이용하여 프로그램을 짜다가 현재 활성화 된 자식폼의 함수를 호출하는 부분에 대한 문제가 발생했다.

MDI부모창에서 Child1 이라는 자식폼을 만든경우


child1 에서는 

public void 함수명()


Child1 child = (Child1)this.this.ActiveMdiChild;

child.함수명();


이라고 했으면 호출 되는게 당연하다.

MDI 에서 파일 저장하기를 하려고 하다가 문제가 발생했다.

자식폼이 하나가 아닌 것이다.. 자식폼이 여러개라면 ??

Child1인지 Child2 인지 모르기 때문에 child2 를 저장하는데 Child1을 선언했다면 오류가 날것이다.

그래서 인터넷을 뒤지다가 여러가지 정보를 모아서 성공!!!


우선 클래스 파일을 하나 만든다

MdiChildForm.cs 라고 하자.

public class MdiChildForm: Form   // fForm을 상속받자 (using System.Windows.Forms;)

    {

        public virtual void saveFile()   자식폼에서 호출될 함수 이름...  virtual로 선언.

        {

        }

    }


자식 폼에는 아래와 같이 함수를 추가 한다.


pubcli override void saveFile()

{

 .....내용 ....

}



MDI부모폼에서는 아래와 같이 사용한다.

private void Save_ToolStripMenuItem_Click(object sender, EventArgs e)

        {


            MdiChildFormchild = (MdiChildForm)this.ActiveMdiChild;

            child.saveFile();

        }


이로써 자식폼이 여러개일지라도 해당 자식폼의 함수를 호출 할 수 있게 되었다.




Posted by SadDev
|