タイトル : 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年目の若輩者です。 これらのような問題を解決できる良い御知恵をご教授いただけますよう 宜しくお願いいたします。 |