tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Form(Class)をPublic変数に代入したい
投稿日: 2010/11/03(Wed) 20:54
投稿者tomi
環境:WinXP VB2005

はじめまして、御世話になります。

同じような振舞いををする、3つの画面(フォーム)を作成し、ボタン等のイベント処理を
モジュールで一括でコントロールしようとしています。

通常の画面ではPictureBoxと、Butttonがそれぞれ6個あります。
大画面ではPictureBoxと、Butttonがそれぞれ3個、小画面ではそれぞれが9個あります。

なぜ、こんなことをしているかというと、御年寄りが見るには大画面(PictureBox)がよく、
たくさんの画像を一気に見るには小画面が良いのではと考え3つのフォームを作成しました。
当然ながら、それぞれのフォーム同士はButtonイベントにて切替が可能です

それぞれのフォームにて、
Public Class Form_xx

   Public Pict_box() As PictureBox
   Public Pict_btn() As Button

  Private Sub Form_xx_Load

     '__________________________________________________________
   'ここに、フォーム用の変数があれば、変数 = Form_xx としたいです
     '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     Pict_box = New PictureBox() {PictureBox1, PictureBox2, PictureBox3, ....}
     Pict_btn= New Button() {Button1, Button2, Button3, ....}

     MJ_Load(Pict_box , Pict_btn)   'モジュールでの処理へ

  End Sub

 Private Sub Button_Click
     ’切替に応じたフォームの表示(小画面に切替の場合)
   Form小.Show
      Me.Close
   Me.Dispose
  End Sub

End Class

とそれぞれのフォームにコードを書いて、モジュール内にて下記のように処理しています。

Module Module1

     '__________________________________________________________
   'ここに、フォーム用の変数が宣言できれば、Public変数 としたいです
     '~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     Public Sub MJ_Load(ByRef Pict_box() as PictureBox , _
                        Byref Pict_btn() as Button )

        For i As Integer = 0 To pict_btn.Length - 1        
            pict_btn(i).Parent = Pict_box(i)   ’ボタンの親を設定
            pict_btn(i).Top = pict_btn(i).Top - Pict_box(i)
            pict_btn(i).Left = pict_btn(i).Left - Pict_box(i)
            pict_btn(i).Tag = i
            AddHandler pict_btn(i).Click, AddressOf pict_btn_Click
        Next

     End Sub
    
     'フォームのボタンが押されたときの処理
     Public Sub pict_btn_Click(ByVal sender As Object, ByVal e As EventArgs)

        Dim i As Integer = _
            CInt(CType(sender,System.Windows.Forms.Button).Tag.ToString)

    Form_xx.Pict_box(i).Image=Image.FormFile(xxxxxxx)
        ※<< この部分の呼ばれたフォームを取得したい(知りたい) >>※
    
     End Sub
End Module

呼ばれたフォーム(クラス)をあらかじめ変数等に代入できるのであれば
Module 内で変数を設定して、ロード処理の際に呼び出すフォーム(Class)を代入して
、pict_btn_Clickのイベント内で 

    変数.Pict_box(i).Image=Image.FormFile(xxxxxxx) 

と処理して、フォームに画像を表示したかったのですが、この変数の宣言にて
宣言の仕方が解からず途方にくれております。

 Dim Frm as ?????? ← フォーム(Class)の宣言?????
(Newしてしまうと、特定のフォーム(Class)しかアクセスできません)

あらかじめ、Form(Class)が特定できているのであれば、上のコードのように
  Form_xx.Pict_box(i).Image=Image.FormFile(xxxxxxx)
とすれば動作するのですが、、、、、、

VBのモジュール機能の便利さを痛感して、VBに乗換えて2年目の若輩者です。
これらのような問題を解決できる良い御知恵をご教授いただけますよう
宜しくお願いいたします。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。