VB.net Coded PictureBox不是Form1的成员

时间:2016-09-07 03:49:22

标签: vb.net

我有两个表单,Form1有一个可点击的图片框通过代码创建对象,当它点击它时会显示Form2。 Form2,我有一个按钮,当它点击它将设置图像并从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 个答案:

答案 0 :(得分:2)

Form1中的代码(第一个示例)位于子<。

pbLogo仅在sub中显示为dimm&d; d。 (这称为变量范围)

从子代码中取出这行代码:

Dim pbLogo As New PictureBox

并将其放在文件的顶部 - &#39;类范围&#39;所以说。

像这样写:

public pbLogo As New PictureBox

你应该可以从另一种形式看到它。

(注意,当你说'form1.pblogo&#39;并且它有效时,VB真的会让你做一个丑陋的事情。但它确实有效。因为vb在幕后做了一些事情。最好传递一个实际的form1对象的实例。但如果它有效,我会说,你可以变老,试图变得完美。除非你有一些势利的人审查你的代码; - )