所以我在PictureBox
Label
上隐藏了这个form1
,我想在Button
中按form2
时显示它。
Form1代码:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.Label3.Hide()
Me.PictureBox3.Hide()
Form2代码:
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
PictureBox3.Show()
但picturebox3
中未声明form2
,因此我该如何访问它?
答案 0 :(得分:1)
有几种方法。正如其他人在答案中所述,以下是一种解决方案
PictureBox
Form1
的公共属性
Form1
的实例传递给Form2
,以便Form2
可以访问此Form1
的实例并使用该属性来源可能如下所示,例如:
在Form1中
public PictureBox ThePictureBox
{
get { return this.pictureBox1; }
}
在Form2中
private Form1 form1Instance;
public Form2(Form1 form1)
{
InitializeComponent();
form1Instance = form1;
}
public void Button_Click(object sender, EventArgs e)
{
this.form1Instance.ThePictureBox.Visible = true;
}
另一种方式是:如果Form2
打开Form1
,您可以在Form2
中声明一个事件,让Form1
订阅它,从而通知{{1}图片框应该是可见的。这样您就不必公开一个应该是Form1
私有的成员。
这可能是这样的:
在Form1中
Form1
在Form2中
private void OpenForm2()
{
Form2 f2 = new Form2();
f2.ShowPictureBox += ShowPictureBox;
f2.Show();
}
private void ShowPictureBox(object sender, EventArgs e)
{
this.pictureBox.Visible = true;
}
我知道您的示例代码是Visual Basic,但是当您标记问题“C#”时,我想您应该能够轻松地将其转换为VB.NET - 我的VB.NET是不够流利: - )
答案 1 :(得分:0)
首先,您需要能够从其他表单访问您的元素(因为您应该将访问修饰符设置为内部或公共)。 然后,您可以通过创建实例或将表单传递给其他形式的方法,从另一个表单调用相关元素。顺便提一下,您应该查看this link以获取详细说明。
答案 2 :(得分:0)
在某些情况下,我们需要以多种形式使用控件。这可以通过在不同形式之间共享控制来实现
在您的情况下,在按钮单击期间在Form2中添加控件,它应该可以工作。
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Me.Controls.Add(Form1.PictureBox)
End Sub
注意:Form1.PictureBox是一个共享属性。我们应该在Form1.vb
中定义它public Shared Property PictureBox As PictureBox
Get
Return Me.PictureBox3
End Get
End Property