C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 30 を表示中)
■14599 / )  Re[9]: ユーザーコントロールのメンバへの参照
□投稿者/ 魔界の仮面弁士 (651回)-(2008/02/22(Fri) 17:40:32)
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」した時点で、表示中の物とそっくりの別フォームが新たに生成されて
しまいますので、元のフォームとは別の物を操作する結果になってしまいます。

返信 編集キー/


管理者用

- Child Tree -