允许第二个表单更改表单1上图片框的可见性

本文关键字:表单 可见性 第二个 | 更新日期: 2023-09-27 18:08:13

Form1:我已经将图像的修饰符设置为public -> Home_picturebox1

Form2:

    public Form1 Firstform = new Form1(); // This is above the following code
    private void PS3IP_Confirm_Click(object sender, EventArgs e)
    {
        //PS3.ConnectTarget(PS3IP_Textbox1.Text); // Update the IP
        Firstform.Home_picturebox1.Show();
        //this.Close();
    }

它编译良好,但图像不显示一旦事件已被调用?

任何想法?://

允许第二个表单更改表单1上图片框的可见性

new Form1确实做到了它所说的,创建了一个Form1的新实例,你需要传递一个引用到你的原始表单,这样做的一种方法是在构造函数中。

private Form1 FirstForm;
public Form2(Form1 myForm)
{
    FirstForm = myForm;
}

问题:

当你声明

public Form1 Firstform = new Form1();

它实际上是创建一个新的表单对象。

解决方案:

您需要将Form1的对象作为参数发送给Form2,然后更改Home_picturebox1的可见性。

在Form1:

private void btnGoToForm2_Click(object sender, EventArgs e)
{
    PS3IP obj= new PS3IP(this);
    obj.Show();
}

In Form2:

public Form1 Firstform;
public PS3IP(Form1 ParentForm)
{
     InitializeComponent();
     FirstForm=ParentForm;
} 
private void PS3IP_Confirm_Click(object sender, EventArgs e)
{
    //PS3.ConnectTarget(PS3IP_Textbox1.Text); // Update the IP
    Firstform.Home_picturebox1.Show();
    //this.Close();
}

您没有引用当前的form1实例,而是创建了一个新的,尝试:

   Form1 form1;
    public Form6(Form1 form1)
    {
        InitializeComponent();
        this.form1=form1;
    }
private void PS3IP_Confirm_Click(object sender, EventArgs e)
    {
        form1.Home_picturebox1.Show();
        //this.Close();
    }