質問: vb6のユーザーコントロールの受け渡しでプロパティ 自作のユーザーコントロールをフォームに貼り付け、 それをクラスに渡してクラス内でそのコントロールのvisibleを制御しようとしておりますが、 フォームからコントロールのvisibleプロパティにアクセスできますが、 クラスからだと、 メソッドまたはデータメンバが見つかりません とコンパイルエラーが出ます。 そこで、コントロールをcontrolやusercontrolにキャストしてみましたが 型が一致しません というエラーとなってしまいます。 コントロールにvisibleプロパティの追加を試みましたが、 activexコントロールインタフェースウィザードの使用できる名前に於いて それらのプロパティが列挙されません。 対象がユーザーコントロールでなく、ボタンなどの標準コントロールの場合は できたのですが・・・ なにか方法をご存知でしたらご教授ください。
回答: visibleプロパティを管理しているのがコンテナ側だからですよ formやpictureboxはコンテナになりますのでフォームにはったusercontrolの場合はvisibleプロパティが操作可能です クラスに渡した usercontrolですとこのコンテナが提供するextenderプロパティを直接操作することが出来ないのではと思います usercontrolにvisibleを操作するプロパティを追加してみましょう private bvisible as boolean public property let myvisible(value as boolean) bvisible = value ' extenderを通してvisibleを操作 extender.visible = value propertychanged "myvisible" end property public property get myvisible() as boolean myvisible = bvisible end property private sub usercontrol_initproperties() ' プロパティの初期化 bvisible = extender.visible end sub private sub usercontrol_readproperties(propbag as propertybag) bvisible = propbag.readproperty("myvisible", extender.visible) end sub private sub usercontrol_writeproperties(propbag as propertybag) propbag.writeproperty "myvisible", bvisible, extender.visible end sub といった具合のコードを追加しておきます クラス側では obj.myvisible = true または obj.myvisible = false といった具合で操作してみましょう