我有两个表单,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中创建了很多可以实现的图片框,那就不太好了。
我想首先测试单个图片盒,如果成功,我将继续使用图片盒阵列。
非常感谢任何帮助。
由于
答案 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对象的实例。但如果它有效,我会说,你可以变老,试图变得完美。除非你有一些势利的人审查你的代码; - )