カスタム バージョンのラベル コントロール (ユーザー コントロールを使用して作成) があります。デザイナーでの作業中に、(プロパティ パネルの) Name プロパティの設定をインターセプトし、それを使用して Text プロパティを生成したいと考えています。つまり、プロパティ パネルの Name プロパティに「lblFirstName」と入力すると、Text プロパティが「First Name」に設定されていることがすぐにわかります。
Name プロパティの解析は問題ではありません。私はそれを行うことができます。
Name プロパティをオーバーロード/シャドウして ("Overrides" が許可されていないため)、この "アスペクト" をカスタム ラベル コントロールに本質的に追加しようとしましたが、設計時に Shadowed メソッドにヒットしないようです。コードで操作された場合、実行時に 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 プロパティを設定できるようにすることもできます。ラベルの Name プロパティ自体だけでなく、Designer.vb コードの新しい名前も反映する必要があるため、これが簡単になるとは思えません。