2010-01-17 18 views
55

Visual Studio (WinForms C#)에서 사용자 정의 컨트롤을 개발했고 질문이 있습니다.사용자 정의 - 사용자 정의 속성

특정 문자열 값을 변경할 수 있으려면 사용자 컨트롤의 사용자가 필요하며 폼에 사용자 정의 컨트롤을 추가하고이를 클릭하여 내 사용자 정의 컨트롤이있는 속성 창을 가져올 수 있기를 바랍니다. 사용자 정의 속성이 표시됩니다.

내 사용자 정의 컨트롤에 대한 내 자신의 사용자 지정 속성을 어떻게 가질 수 있습니까? 예를 들어 :

사용자 정의 컨트롤에 TextBox가 포함되어 있으며 사용자가 디자인 타임의 속성에서 "텍스트"또는 "값"이라는 속성을 통해 해당 TextBox의 값을 변경할 수 있기를 바랍니다.

+0

참조 기사 : 당신은 속성을 재정의해야합니다 in-C-Sharp /) –

답변

88

는이 같은 속성의 특성을 통해이 작업을 수행 :

[Description("Test text displayed in the textbox"),Category("Data")] 
public string Text { 
    get { return myInnerTextBox.Text; } 
    set { myInnerTextBox.Text = value; } 
} 

카테고리가이 건물은 비주얼 스튜디오 속성 상자에 표시되는 아래의 제목입니다. Here's a more complete MSDN reference (카테고리 목록 포함).

+2

System.ComponentModel을 포함하거나 포함하지 않으면이 코드로 프로젝트를 생성 할 때마다 내 VS2010이 충돌합니다. & –

6

사용자 정의 컨트롤에 공용 속성을 추가하기 만하면됩니다.

당신은 [Category("MyCategory")][Description("A property that controls the wossname")] 그것이 더 좋은 수 있도록 속성을 추가 할 수 있지만 한 그것은 공공 속성의로는 속성 패널에 표시해야한다.

31

그것은 매우 간단합니다, 그냥 속성 추가 :

public string Value { 
    get { return textBox1.Text; } 
    set { textBox1.Text = value; } 
} 

Text 속성을 사용하면 조금 까다 롭습니다, 해당 UserControl 클래스는 의도적으로 숨 깁니다. http://www.c-sharpcorner.com/UploadFile/f5a10c/creating-custom-controls- ([C#으로 사용자 지정 컨트롤 만들기] - 여기

[Browsable(true), EditorBrowsable(EditorBrowsableState.Always)] 
public override string Text { 
    get { return textBox1.Text; } 
    set { textBox1.Text = value; } 
} 
+1

정말 고마워요! 이것에 관해 완전히 잊었다. 그리고 그것은 나를 생각 나게하려고 노력하고 있었다. – Damian