상세 컨텐츠

본문 제목

컨트롤의 속성 그룹화 하기

C#

by 탑~! 2010. 12. 20. 11:46

본문

DesignTime에서 Label의 Font 속성을 보면 아래 그림과 같이

관련된 속성들이 Font라는 그룹으로 묶여있습니다.

 

 

+ 버튼을 눌러 각 속성을 설정할 수 있도록 되어있죠

이렇게 관련된 속성이 그룹화되어 있으면 아주 편리합니다.

 

아래에 만드는 법을 소개합니다.

 

 

 

 

Step1) 사용자 지정컨트롤 추가

MyControl 사용자 지정 컨트롤을 추가합니다

public partial class MyControl : Control

{

    public MyControl()

    {

        InitializeComponent();

    }

 

    protected override void OnPaint(PaintEventArgs pe)

    {

        base.OnPaint(pe);

    }

}

 

 

 

 

Step2) 그룹화할 속성 클래스 추가

Options Class를 추가합니다.

public class Options

{

    public bool UseOpacity { get; set; }

    public bool UseText { get; set; }

}

 

 

 

 

Step3) 사용자 지정컨트롤에 속성 추가

private Options m_Option = new Options();

public Options Option

{

    get

    {

        return m_Option;

    }

}

 

여기까지 하면 아래 그림처럼 나옵니다. 

그룹화 되어있지만 확장할 수 없습니다.

 

 

 

Step4) ExpandableObjectConverter 적용하기

확장하고자 하는 Class 혹은 Property에 ExpandableObjectConverter Attribute를 적용합니다.

한쪽만 적용하면 됩니다.

 

case1) Class에 적용

[TypeConverter(typeof(ExpandableObjectConverter))]

public class Options

{

    public bool UseOpacity { get; set; }

    public bool UseText { get; set; }

}

 

case2) Property에 적용

private Options m_Option = new Options();

[TypeConverter(typeof(ExpandableObjectConverter))]

public Options Option

{

    get

    {

        return m_Option;

    }

}

 

 

 이제 원하는 그림을 얻었습니다.

 

 출처 : http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=18&MAEULNO=8&no=1848


관련글 더보기