• ベストアンサー

ユーザーコントロールの参照について

ユーザーコントロールを作成し、デザイナ上でユーザコントロールを追加した場合には、コード上でLeftプロパティなどの自身で作成したプロパティ・関数以外でも参照ができるのですが、 コード上で動的にコントロールを追加した場合、自身作成したプロパティ・関数のみしか参照ができません。 ユーザコントロールの作成時に「公開する」的なプロパティ等の設定が必要なのでしょうか? 環境は、VB6/WindowsXP です。 ご存知の方がいらっしゃいましたら、ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

UserControl側にVisibleプロパティのLet,Getが必要ですよ ZOrderに関してもメソッドとして実装が必要です Public Property Let Visible( value as boolean)   extender.visible = value End Property Public Property Get Visible() as boolean   Visible = Extender.Visible End Property Public Sub Zorder(value as integer)   Extender.Zorder value End Sub といった具合の実装です Left,Topに関してもExtenderオブジェクトが管理してますよ

Ryoumac
質問者

お礼

早速の回答ありがとうございます。 教えていただいたとおり、上記を実装したところ正常に参照可能になりました。 正直なところ、まだExtenderオブジェクトがどういうものなのか… あまり理解できていませんが、これから自身で調べてみようと思います。 本当に助かりました、ありがとうございます。 また、質問した際にはよろしくお願いしますm(_ _)m

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

具体的にいつその取れないデータを取得したいのでしょう ユーザーコントロール側のコード、動的に追加するコード どこで、どのようなエラーになるかを明示しましょう

Ryoumac
質問者

お礼

ご指摘いただきありがとうございます。 以後気をつけて質問いたしますm(_ _)m

Ryoumac
質問者

補足

何も明示しておらず申し訳ありません。 >具体的にいつその取れないデータを取得したいのでしょう 動的にコントロールを追加した直後、配置場所を設定するためにLeft/Top/Visibleなどのプロパティを参照したいのです。 イベント的には、FormのLoadイベント内で行っています。 >ユーザーコントロール側のコード、動的に追加するコード >どこで、どのようなエラーになるかを明示しましょう  下記のコード上で、Form1の  > myTabPageCtrl(1).Visible = True  にて、コンパイルエラー:メソッドまたはデータメンバが見つかりません。  となります。  別途CommandButtonを動的に生成した場合や、デザイン上でユーザコントロールを追加した際には正常に参照可能でコンパイルエラーにもなりません。 【ユーザーコントロール】 デザイン時:ControlContainerプロパティをTrueにしました。 コード:以下のとおりです。(省略していますが…) Option Explicit '========================================================== '当ユーザコントロール初期化処理 '========================================================== Public Sub Initialize() 'コントロール再配置 '⇒この関数内で、ユーザコントロール内のコントロール等の初期化を行っています。 省略… End Sub 【フォーム】 Private myTabPageCtrl(3) As Project1.TabPageControl '========================================================== '関数名:Form_Load '概 要:画面ロードイベント '    ・画面起動時の初期処理を行う。 '========================================================== Private Sub Form_Load() 'タブ初期化 TabStripMain.Tabs.Clear 'タブの追加 Set myTabPageCtrl(1) = Form1.Controls.Add("Project1.TabPageControl", "myTab1") myTabPageCtrl(1).Initialize myTabPageCtrl(1).Visible = True myTabPageCtrl(1).ZOrder 0 Set myTabPageCtrl(2) = Form1.Controls.Add("Project1.TabPageControl", "myTab2") myTabPageCtrl(2).Initialize Set myTabPageCtrl(3) = Form1.Controls.Add("Project1.TabPageControl", "myTab3") myTabPageCtrl(3).Initialize End Sub

関連するQ&A