NB:私はこの質問にもっと気づくためにC#タグを入れました。 の回答がC#でうまくいけば、私はそれを翻訳することができますVB .NETに挿入します。私が直面する問題は、.NET Frameworkの概念にあります。カスタムデザイナーがデザインサーフェイス上のコンポーネントの表示を変更します
私は現在グラフィックデザイナーを執筆しています。ユーザーは自分のカスタマイズしたコンポーネントをデザイン面に追加し、希望どおりに並べ替えてテキストファイルに保存できます。だから、これは実際にはない
Public Class MyDesigner
Inherits ComponentDesigner
Public Overrides Sub Initialize(component As IComponent)
MyBase.Initialize(component)
End Sub
'These are the properties I will hide
' (real list is way longer)
Private _hiddenPropertyList As String() = { _
"AccessibleRole", _
"AccessibleDescription", _
"AccessibleName", _
}
Protected Overrides Sub PreFilterProperties(properties As IDictionary)
MyBase.PreFilterProperties(properties)
For Each PropName As String In _hiddenPropertyList
If properties.Contains(PropName) Then
'We hide the properties that are in the list
properties.Remove(PropName)
End If
Next
End Sub
End Class
:私は、ユーザーに表示したくないほとんどの部分について
はOK取り組んでいるが、私はいくつかのプロパティを隠すために、カスタムデザイナを使用しようとしました複雑です。私のデザイナーをアクティブにするには、コンポーネントクラス定義のアトリビュートとして設定する必要があります:
<Designer(GetType(MyDesigner))>
Public Class MyLabel
Inherits Label
Public Sub New()
MyBase.New()
End Sub
End Class
これは本当に複雑ではありません。
問題
問題は、新しいMyLabel
がデザインサーフェイスに作成され、私はDesignerAttribute
を設定しているとき、それは絵のように、表面の下に表示され、次のとおりです。
そして、ここで私はDesignAttribute
を削除すると、結果である:
私は実際に表示したいものです。
私の質問
私はこの仕事をするために、ここで何をしないのですか?
ええ、奇妙に思えます。何らかの理由で、デザイナ属性を適用するときに実際のコントロールではなくラベルとしてコンポーネントが追加されます。 –