2010-02-05 5 views
3

잘하면 나는 그 말이 맞다. WinForm (3.5) 응용 프로그램에 두 개의 영역으로 나누어 진 1 개의 Form이 있습니다. 1은 탐색이고 다른 하나는 패널입니다. 네비게이션 부분, 즉 인구 통계에서 원하는 것을 선택한 다음 패널에 모든 인구 통계 컨트롤이 포함 된 UserControl을 삽입합니다.사용자 정의 컨트롤의 컨트롤을 속성으로 지원해야합니까?

각 사용자 컨트롤에 각 Control에 대해 Property이 있어야하는지 묻습니다. 예 : ucDemographics에는 txtCity이라는 텍스트 상자가 있습니다. valuetxtCity으로 저장하고 내 양식 및 다른 사용자 정의 컨트롤에서 액세스 할 수 있도록하려면 Property이 있어야합니까?

일반적으로 허용되는 '모범 사례'입니까?

그렇지 않은 경우 무엇입니까?

답변

5

UserControl을 사용하여 달성하고자하는 대상에 따라 다릅니다.

일반적으로 호출자가 텍스트 상자에 대한 모든 것을 조작 할 수 있으므로 txtCity는 노출되지 않습니다. 대부분의 시나리오에서는 현재 텍스트 만 공개합니다.

public string CityText 
{ 
    get { return this.txtCity.Text; } 
} 
+0

정상적으로 당신은 Get, Set 또는 Public Set만을 사용합니까? 그렇게하면 사용자 정의 컨트롤 자체에서 변수를 설정할 수 있습니다. 요점을 놓치고 있습니까? –

+0

UserControl의 목적에 따라 다릅니다. 호스트 양식에서 텍스트를 업데이트하도록 허용하려면 공개 세트를 공개하고 그렇지 않은 경우 공개하십시오. –

2

아니요, 실제로는 그렇지 않습니다. 사용자 컨트롤의 의도는 자체 동작으로 새 컨트롤을 작성하는 것입니다. 대부분 "여러 가지"속성, 메서드 및 이벤트가 있어야하며 양식이 새 컨트롤과 상호 작용할 수 있어야합니다. 당신이 그것과 함께 일하는 유일한 좋은 방법은 UserControl을 사용하지 않고 양식에 직접 컨트롤을 배치하는 것이 더 바람직하다는 것을 구성 컨트롤을 드러내는 것입니다.

관련 문제