|
■No62548 (Azulean さん) に返信 いつもありがとうございます。 おかげ様で、属性のこと、コントロールデザイナのこと、少しずつわかって参りました。
参照時、フィルターの適用先が.NET Framework 4 Client Profileになっていたので、 System.Design.dllが一覧に表示されなかったようです。 プロジェクトのプロパティ→コンパイル→コンパイラの詳細設定から、 対象のフレームワークを.NET Framework 4にしたら見つけることができました。 System.Design.dllを参照すると、System.Windows.Forms.Design.ControlDesignerを継承することができ、 以下のコードが正常に動いてカスタムタブコントロールを配置することができました。
タブの初期配置を「カスタムタブ属性クラス」で以下のように行なっているのですが、 この方法が本当に正しいのか自信がありません。
Public Class カスタムタブ属性クラス Inherits System.Windows.Forms.Design.ControlDesigner
'属性設定されたタブコントロールのインスタンスを得る変数 Private myTabControl As TabControl
'初期化 Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent) MyBase.Initialize(component)
myTabControl = CType(Me.Control, TabControl) End Sub
'配置時のデフォルト Public Overrides Sub OnSetComponentDefaults() myTabControl.TabPages.Add(New TabPage("タブ1")) myTabControl.TabPages.Add(New TabPage("タブ2")) myTabControl.TabPages.Add(New TabPage("タブ3")) End Sub
End Class
<System.ComponentModel.Designer(GetType(カスタムタブ属性クラス))> _ Public Class カスタムタブコントロール Inherits TabControl End Class
この方法だと、配置したタブコントロールのタブページをデザイナで切り替えられないなどの問題が…… …この問題はおそらく、タブページをカスタムタブコントロールとは別に生成して、カスタムタブコントロールにAddすれば解決できそうですね… フォームのデザイナ.vbの中でそんな処理をしていた気がするので…デザイナ.vbにコードを自動追加するには… Azuleanさんが > このDesignerにコードを自動的に追加する設定はどのクラスのどのメソッドに……? という質問に対して、 >DesignerAttribute で指定されているクラスで実装されています。 と回答してくださっているので、ControlDesignerクラスのメソッドの中にあるはず… どれをオーバーライドすれば……
|