Creative Commons License

Microsoft .NET

닷넷!시작하기
닷넷! Ver 2.0~
닷넷!스킬업
웹개발
윈폼개발
실용모듈개발
Tip & Tech
하루 한 문법

Microsoft .NET 개발자들을 위한 공간입니다. 기초강의에서 부터 고급 기술 정보 및 팁등을 다루도록 하겠습니다.

.

윈폼개발

닷넷을 기반으로 한 윈도우 응용프로그램 개발 지식을 다룹니다. 비지니스 응용프로그램을 위한 닷넷 윈폼 응용프로그램은 아주 강력합니다

[기본] 소유자 폼과 피소유자 폼

작성자 : 박종명
최초 작성일 : 2008-06-26 (목요일)
최종 수정일 : 2008-06-26 (목요일)
조회 수 : 3240

이번 포스트에서는 소유자 폼과 피소유자 폼에 대해서 간략히 소개하고자 합니다

 폼을 띄울때 사용하는 Show 혹은 ShowDialog 메서드는 두 개의 오버로딩 목록을 가지고 있습니다 

 하나는 매개변수가 없으며 또 다른 하나는 새로 띄울 폼의 소유자 폼을 명시하도록 합니다

 만일 아래와 같이 폼을 띄운다면,

NewForm newForm = new NewForm();
newForm.Show(this);

 현재 폼(this) newForm 의 소유자 폼이 되며 newForm 은 피소유자 폼이 되는 것입니다

이렇게 소유자/피소유자 관계가 설정된다면 다음과 같은 효과를 얻을 수 있습니다.

 1. 소유자 폼의 최소화, 닫기에 귀속적이 된다
피 소유자 폼은 소유자 폼이 최소화 될때 같이 최소화 되며 소유자 폼이 닫힐 때 같이 닫히게 됩니다

 2. 피소유자 폼이 항상 상위에 표시된다
Show() 메서드로 모덜리스로 띄운 경우에도 소유자 폼을 클릭하면 피 소유자 폼이 아래로 숨는 것이 아니라 소유자 폼 위에 그대로 남아 있으면서 비활성화 된 모습으로 표시 됩니다

 위 그림은 폼을 Show() 로 띄운 후 소유자 폼을 클릭한 모습입니다
(모덜(ShowDialog) 로 띄울 경우에는 제어권을 소유자 폼에게로 주지 않으므로 당연히 피 소유자 폼이 항상 상위에 표시 될 테지요)

우리가 자주 사용하는 윈도우의 메모장에 보면 '찾기' 창을 띄울 때 소유자/피소유자 형태의 모덜리스 창으로
나타남을 알 수 있습니다

 

이와 같이 응용프로그램의 상위에 표시되도록 하면서 소유자 폼에게도 제어권을 넘길 필요가 있을 때 사용하면 유용할 것입니다 

또한 소유자 폼은 여러 개의 피 소유자 폼을 가질 수 있습니다
다음과 같이 두개의 폼이 현재 폼의 피 소유자로 지정되었을 경우,

Form2 form2 = new Form2();
form2.Show(this);

Form3 form3 = new Form3();
form3.Show(this);

 현재 폼은 두 개의 피 소유자를 가지게 되며, 폼의 OwnedForms 속성으로 피 소유자 폼들을 검색할 수 있습니다

foreach (Form f in this.OwnedForms)
{
      MessageBox.Show(f.Text);
}

폼의 OwnedForms 속성과 달리 Owner 속성은 소유자 폼을 지정하는 속성입니다
, 아래와 같이 Show 메서드를 통해 소유자 폼을 지정하거나,

MyForm myForm = new MyForm();
myForm.Show(this);

폼의 Owner 속성을 통해 지정하거나 둘 다 소유자 폼을 지정하는 동일한 일을 하게 됩니다

MyForm myForm = new MyForm();
myForm.Owner = this;
myForm.Show();

 * 참고

닷넷 프레임워크 1.x 버전에서는 Show() 메서드로 소유자 폼을 지정할 수가 없습니다.

따라서 폼의 Owner 속성을 통해 지정했어야만 했지만 2.0 버전 부터는

Show 메서드 역시 ShowDialog 메서드와 동일하게 소유자 폼을 매개변수로 입력할 수 있게 되었습니다

 

 

이름
비밀번호
홈페이지
WE <- 왼쪽의 문자를 오른쪽 박스에 똑같이 입력해 주세요