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();
}
이로써 자식폼이 여러개일지라도 해당 자식폼의 함수를 호출 할 수 있게 되었다.
'프로그래밍 > C#' 카테고리의 다른 글
C# GZIP 압축이 Unity에서 안될때.. (0) | 2014.08.01 |
---|---|
[C#] Socket.BeginReceive 딜레이 현상. (0) | 2014.02.26 |
[C#]byte[] 데이터 암호화 (0) | 2012.08.31 |
BinaryWriter pointer 사용(seek) (0) | 2012.08.06 |
[ASP.NET C#]이미지 메타태그 값 수정하기 / keyword, comment / EXIF (0) | 2011.12.08 |