2008/02/22(Fri) 17:42:06 編集(投稿者)
■No14597 (あき さん) に返信
> 「非共有メンバへのアクセス....」のエラーがでます。
確認させてください。
UserCtl というのは、「フォームに貼った時につける名前」の方では無く、
「ユーザーコントロールの型名」なのですね?
> 3.モジュール内でフォーム上のユーザーコントロールのプロパティを参照
そもそも、なぜ Module からアクセスさせたいのでしょうか?
StartUpForm 内の事であれば、Module ではなく、StartUpForm 自身にやらせれば良いはず。
どうしても Module に処理させたいのであれば、
Public Sub DataRead()
Dim s as String = UserCtl.InputText
End Sub
ではなく、
Public Sub DataRead(ByVal ctrl As UserCtl)
Dim s As String = ctrl.InputText
End Sub
のように、UserControl のインスタンスを渡してください。
この場合、呼び出し側はスタートアップフォーム内から
Private Sub StartUpForm_Load(ByVal sender As Object, ……
DataRead(Me.UserCtl1)
End Sub
のように書きます。
# このほか、My.Forms.StartUpForm.UserCtl1 や StartUpForm.UserCtl1 の構文を使って
# アクセスする手法もありますが、個人的には、あまりお薦めはしません。
> Modulの先頭にも次の記述がいるということでしょうか?
> Public frm as New StartUpForm ※(ユーザーコントロールが貼り付いているフォーム)
それではマズイと思いますよ。
「New」した時点で、表示中の物とそっくりの別フォームが新たに生成されて
しまいますので、元のフォームとは別の物を操作する結果になってしまいます。