Creative Commons License

Microsoft .NET

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

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

.

윈폼개발

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

[컨트롤, 속성창] PropertyGrid

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

이번 포스트에서는 좀 특별한 컨트롤을 소개할까 합니다.

Visual Studio 를 보면 아래 그림과 같은 속성창이 있습니다.

 

디자인타임에 이 속성창을 이용해 컨트롤의 각종 속성을 제어하게 됩니다.

 

PropertyGrid 컨트롤은 응용프로그램의 실행환경(런타임)에서도 위와 같은 속성창을 표시하도록 하고

설정한 컨트롤의 속성을 실행환경에서 직접 변경,적용할 수 있도록 정의된 컨트롤 입니다.

 

간단한 샘플을 하나 만들어 보도록 하겠습니다.

아래와 같이 폼에 PropertyGrid 컨트롤을 올려 봅니다.

아래 그림처럼 PropertyGrid 컨트롤을 폼에 추가하면 속성창과 유사한 인터페이스가 나타납니다.

 

그리고 폼에 버턴을 하나 올리고 PropertyGrid 컨트롤의 SelectedObject 속성을 방금 추가한 버턴으로 설정합니다.

그리고 응용프로그램을 실행하면 다음 그림처럼 런타임에 버턴에 대한 속성을 직접 제어 할 수 있게 됩니다.

 

VS와 같은 개발툴을 직접 만든다거나 윈폼 컨트롤()에 대한 속성조절을 런타임에 속성창을 통해서 할 수 있도록

하는 응용프로그램을 개발한다면 상당히 유용한 컨트롤이 되겠네요...

 

사실 이 컨트롤은 닷넷 2.0 이전부터 존재하던 컨트롤이므로 그리 특별할 것도 없습니다만,

전 근래 처음 봤습니다 ^^;

그럴수 밖에 없었던 것이 VS2005 에서는 도구상자에 기본적으로 나타나 있지만 VS2003 에서는 도구상자에 없습니다.

사용자가 도구상자에 항목추가를 직접 해 줘야 나타나게 되어 있었습니다.

 

샘플에서도 본 것 처럼 PropertyGrid 컨트롤의 가장 기본적인 속성은 SelectedObject 입니다.

SelectedObject 는 다음 코드 처럼 속성을 표시하고 싶은 (컨트롤) 개체의 인스턴스를 지정하게 됩니다.

this.propertyGrid1.SelectedObject = this.button1;

이렇게 하면 button1 에 대한 속성이 속성창을 통해 나타나게 되는 것입니다

 

(컨트롤) 개체 속성 변경

PropertyGrid 컨트롤의 변경 사항은 SelectedObject 에 설정된 컨트롤에 바로 적용이 됩니다.

즉 속성창을 통해 button1의 특정 속성을 변경하면 그 즉시 버턴 컨트롤이 변경됩니다.

그러나 속성창을 통하지 않고 코드로 button1의 속성을 변경하면 PropertyGrid 컨트롤은 바로 바뀌지 않습니다.

다음과 같은 코드가 있다고 가정합니다.

버턴 클릭 이벤트에서 버턴의 Text속성을 변경하는 코드입니다

private void button1_Click_1(object sender, EventArgs e)
{
      this.button1.Text = "
하하하";          
}

응용프로그램을 실행한 후 버턴을 클릭하면 버턴의 Text를 그 즉시 변경되지만 PropertyGrid 속성창은 변경사항을

즉시 반영하지는 않습니다.

다만, PropertyGrid 컨트롤을 다시 클릭하면 반영되게 됩니다.

만일 PropertyGrid 컨트롤의 내용도 바로 변경되도록 하고 싶으면 PropertyGrid 컨트롤을 Refresh 해주면 됩니다.

private void button1_Click_1(object sender, EventArgs e)
{
      this.button1.Text = "
하하하";     

      this.propertyGrid1.Refresh();    
}

이렇게 하면 변경사항은 두 컨트롤(버턴,PropertyGrid ) 모두에 즉시 반영되게 됩니다

  

 

관련 속성

PropertyGrid 컨트롤은 ContainerControl 을 상속받는 컨트롤 입니다.

대부분의 속성이 ContainerControl 이나 ScrollableControl 에서 정의된 속성을 상속받은 것입니다.

여기서는 PropertyGrid 컨트롤의 자체 속성 몇 가지를 살펴 보도록 하겠습니다.

 

1. LargeButtons  속성

단추 크기를 크게 보이도록 할 것인지 보통 크기인지 설정합니다.

만일 이 속성이 참(true)로 설정되면 다음 그림처럼 단추가 왕근이(?)로 표시됩니다.

 

 

2. LineColor 속성

속성창의 테두리 색상에 대한 속성입니다.

다음 그림은 이 속성을 Red로 설정한 모습입니다.

 

 

3. PropertySort 속성

속성이 표시되는 정렬 방식에 대한 속성입니다.

이 속성은 다음 표의 PropertySort 열거형 값 중 하나입니다.

 

 

4. SelectedGridItem 속성

속성창에서 선택된 항목과 값을 설정하거나 가져올 수 있습니다

다음 코드처럼 SelectedGridItem(GirdItem 개체 Label Value 속성을 통해 이 값들을 알 수 있습니다.

 private void button1_Click_1(object sender, EventArgs e)
 {            
      GridItem gi = this.propertyGrid1.SelectedGridItem;
      MessageBox.Show(String.Format("선택된 항목 : {0} , 선택된 항목 값 : {1}"
                                                      , gi.Label, gi.Value.ToString()));           
 }

 

위의 코드를 실행하면 다음과 같습니다.

 

 

5. ViewBackColor, ViewForeColor 속성

속성 이름 의미 그대로 속성창 표의 배경색과 전경색에 대한 속성입니다.

 

이상으로 PropertyGrid 컨트롤 소개를 마칩니다.

 

 

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