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

タイトル Re: Form(Class)をPublic変数に代入したい
投稿日: 2010/11/03(Wed) 23:39
投稿者shu
> Dim Frm as ?????? ← フォーム(Class)の宣言?????
??????をFormとすればとりあえず解決しそうな気がしますが、
Interfaceを定義するこを奨めます。


Public Class Form_xx
    Implements IForm

    Private m_Pict_box() As PictureBox
    Private m_Pict_btn() As Button
    Private m_strFileNames() As String

    Public Sub New()
        ' この呼び出しはデザイナーで必要です。
        InitializeComponent()

        ' InitializeComponent() 呼び出しの後で初期化を追加します。
        m_Pict_box = New PictureBox() {PictureBox1, PictureBox2, PictureBox3, ....}
        m_Pict_btn= New Button() {Button1, Button2, Button3, ....}
        m_strFileNames = New FileNames() {......}

        MJ_Load(Me)   'モジュールでの処理へ
    End Sub

    Public ReadOnly Property Pict_box As System.Windows.Forms.PictureBox() Implements IForm.Pict_box
        Get
            Return m_Pict_box
        End Get
    End Property

    Public ReadOnly Property Pict_btn As System.Windows.Forms.Button() Implements IForm.Pict_btn
        Get
            Return m_Pict_btn
        End Get
    End Property

    Public Property FileNames(ByVal Index As Integer) As String Implements IForm.FileNames
        Get
            Return m_strFileNames(Index)
        End Get
        Set(ByVal value As String)
            m_strFileNames(Index) = value
        End Set
    End Property
End Class

Module Module1

    Public Sub MJ_Load(ByVal fm As IForm)

        For i As Integer = 0 To fm.Pict_btn.Length - 1
            fm.Pict_btn(i).Parent = fm.Pict_box(i)   'ボタンの親を設定
            fm.Pict_btn(i).Top = fm.Pict_btn(i).Top - fm.Pict_box(i)
            fm.Pict_btn(i).Left = fm.Pict_btn(i).Left - fm.Pict_box(i)
            fm.Pict_btn(i).Tag = i
            AddHandler fm.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 btn As Button = CType(sender, System.Windows.Forms.Button)
        Dim i As Integer = CInt(btn.Tag.ToString)
        Dim fm As IForm = DirectCast(btn.FindForm, IForm)

        fm.Pict_box(i).Image = Image.FromFile(fm.FileNames(i))
        ※<< この部分の呼ばれたフォームを取得したい(知りたい) >>※

    End Sub

End Module

Public Interface IForm
    ReadOnly Property Pict_box As PictureBox()
    ReadOnly Property Pict_btn As Button()
    Property FileNames(ByVal Index As Integer) As String
End Interface

こんな感じでしょうか。実行はしていません。

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

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