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

わんくま同盟

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

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


(過去ログ 30 を表示中)
■14606 / )  Re[11]: ユーザーコントロールのメンバへの参照
□投稿者/ 魔界の仮面弁士 (652回)-(2008/02/22(Fri) 20:08:40)
No14605 (あき さん) に返信
>   魔界の仮面弁士さんにもご指摘いただきましたが、そもそもロジックの設計方法が大きく違うのですね。
念のために確認なのですが、VB6 ヘルプにある『Visual Basic フォームの有効期間』の
解説を読んだ事はありますか? (その内容を把握できていますか?)


>   移行ツールでアップグレードした形はあまり信用できないのですかね。
それ以前に、そもそも VB6 であったとしても、そのコードはおかしいです。

元のコードが提示されていないので判断が難しいですが、VB6 でも、
モジュール内からコントロールを操作しようとすれば、このような結果になるはず。

'--- VB6 標準モジュール ---
Sub Sample0()
    MsgBox Text1.Text  '★これはエラー★
End Sub
Sub Sample1()
    MsgBox Form1.Text1.Text  'これはOK
End Sub
Sub Sample2(T As TextBox)
    MsgBox T.Text            'これもOK
End Sub
Sub Sample3(F As Form1)
    MsgBox F.Text1.Text      'これもOK
End Sub
Sub Sample4(F As Form)
    MsgBox F.Text1.Text      'これも一応OK (レイトバインド)
End Sub


で、上記でいうところの Sample1 のようなコードで良いなら、手はあります。
No14599 にも少し書きましたが、Module 内からであっても、
 Dim A As String = StartUpForm.TextBox1.Text
 Dim B As String = StartUpForm.UserCtl.InputText
のような表現が可能です。(VB2005以上であれば)

ただしこの方法を使うのであれば、各フォームを New してはいけません。
さらにこの場合、Sub Main プロシージャの表記は、
 Sub Main()
  Application.Run(New StartUpForm())
 End Sub
や
 Sub Main()
  Dim F As New StartUpForm()
  Application.Run(F)
 End Sub
といった表記にする事はできません。
かわりに
 Sub Main()
  Application.Run(StartUpForm)
 End Sub
または
 Sub Main()
  Application.Run(My.Forms.StartUpForm)
 End Sub
と書く必要があります。

返信 編集キー/


管理者用

- Child Tree -