2016-09-07 5 views
1

私は2つのフォームを持っていますが、Form1はクリック可能なピクチャボックスをコードで作成しています。 Form2、私はそれをクリックすると画像を設定し、Form1からのピクチャボックスに表示するボタンを持っています。VB.netコード化されたPictureBoxはForm1のメンバーではありません

FORM1:

Dim pbLogo As New PictureBox 
pbLogo.SizeMode = PictureBoxSizeMode.StretchImage 
pbLogo.Visible = True 
pbLogo.Size = New Size(202, 86) 
pbLogo.Location = New Point(29, 23) 
AddHandler pbLogo.Click, AddressOf PictureBox_Click 
Me.Controls.Add(pbLogo) 

PictureBox_Click

Private Sub PictureBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)      
    FORM2.Show() 
End Sub 

問題は、私がイメージして表示を設定するのPictureBoxオブジェクトにアクセスすることはできませんです。それは

pbLogoが、それはまだ実行されていないため明らかであるForm1の

のメンバーではないと言います。

FORM2

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Me.Hide() 
    Form1.pbLogo.image = Application.StartupPath + "\images\logo.jpg" 
End Sub 

pbLogoのピクチャオブジェクトがForm1の中に存在し、Form2の中でそれにアクセスする場合、私はそれを達成することができます。私にとっては、Form1で作成されたたくさんのピクチャボックスを持っていても、それを実現できるかどうかは分かりません。

私は最初に1つのpictureboxをテストしたい、そして成功すれば私はpictureboxの配列に進むでしょう。

ご協力いただきありがとうございます。 Form1にコード(最初のサンプル)

おかげ

答えて

2

サブ内側にあります。

pbLogoはdimm'dのサブディスプレイでのみ表示されます。

Dim pbLogo As New PictureBox 

を、ファイルの先頭にそれを置く - 「クラスのスコープ」そう言って:(この変数のスコープと呼ばれている)

は、サブのうちのコード行を取ります。

はこのようにそれを書く:

public pbLogo As New PictureBox 

あなたは他のフォームからそれを見ることができるはずです。

(VBは実際には 'form1.pblogo'と言うと醜いことができますが、動作しますが、動作します。 form1オブジェクトですが、それがうまくいくとすれば、あなたは完璧になるように年をとることができると言うでしょう。

+0

ありがとうFastAI。それは魅力のように働く。 – FunKomZ

+0

私は、あなたがクラスレベルで変数を宣言し、それが宣言されている場所に作成しているのであれば、それをデザイナに追加するだけではどうですか?答えが複数の 'PictureBox'コントロールを追加できるというアイデアなら、あなたのコレクションは必要なのでコードはそのまま動作しません。 – jmcilhinney

+0

@funkomzありがとうございます - 私は10点かそのようなものを得る答えでチェックマークをクリックすることを忘れないでください。(私は鮮明なベーコンのカップル片を得るべきだと思うが、ちょっと、私はStackOverflowを実行しない、私はポイントのために解決する)。 – FastAl

関連する問題