사용자 정의 버전의 레이블 컨트롤 (사용자 정의 컨트롤을 사용하여 작성)이 있습니다. 디자이너에서 작업하는 동안 속성 패널의 Name 속성 설정을 가로 채서 Text 속성을 생성하는 데 사용하려고합니다. 즉, 속성 패널의 Name 속성에 "lblFirstName"을 입력하면 Text 속성이 "First Name"으로 설정되었음을 즉시보고 싶습니다.사용자 정의 컨트롤의 Name 속성을 가로 채기/재정의 하시겠습니까?
Name 속성을 구문 분석하는 것은 문제가 아닙니다. 나는 그걸 할 수있어.
기본적으로이 "aspect"를 사용자 지정 레이블 컨트롤에 추가 할 수 있지만 Name 속성을 오버로드/섀도우하려고했으나 디자인 타임에 Shadowed 메서드를 누르지 않는 것처럼 보입니다. 코드를 통해 조작되는 경우 런타임에 그림자 메서드에 충돌합니다.
요점은 레이블 텍스트와 레이블 이름이 본질적으로 동일하므로 두 배의 작업을 피하는 것입니다. 유일한 차이점은 하나는 인간 친화적이고 다른 하나는 친숙한 형식으로되어 있다는 것입니다.
<System.ComponentModel.Browsable(True),
System.ComponentModel.ParenthesizePropertyName(),
System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Visible)>
Public Shadows Property Name As String
Get
Return MyBase.Name
End Get
Set(value As String)
MyBase.Name = value
If Me.DesignMode Then
Me.Text = Humanize(value)
End If
Me.Invalidate()
End Set
End Property
이것은 올바른 속성을 선택하는 문제 일 수 있습니다. 나는 잘 모르겠다.
반대로 더 쉬운 대안 인 경우 Text 속성을 설정하여 Name 속성을 설정할 수 있습니다. 필자는 Label의 Name 속성 자체뿐만 아니라 Designer.vb 코드의 새 이름도 반영해야하므로이 방법이 더 쉽지 않을지는 의문입니다.
그것은 나를 올바른 길로 인도했습니다. 고맙습니다. – Mario
@Mario 기쁜 마음으로 도와 줘서 고마워. –