图片框的可见属性不能在c#的其他窗体中工作

本文关键字:其他 窗体 工作 属性 不能 | 更新日期: 2023-09-27 18:05:14

你好,我在c#中使用windows窗体。我试图修改从主要形式到另一个图片的可见属性。最初,图片框的visible属性设置为false。当从另一个表单单击按钮时,图片框的visible属性被修改为true。

这是在Form2方法中编写的代码:

private void button_Click(object sender, EventArgs e)
{
    public Form1 frm1 = new Form1();
    frm1.pictureBox.Visible= true;
}

图片框的可见属性不能在c#的其他窗体中工作

Form1是一个实例类型,所以当您执行

public Form1 frm1 = new Form1();
frm1.pictureBox.Visible= true;

你实际上只是创建了一个与原来的Form1完全无关的Form1的新实例,改变了图片框的可见属性,然后丢弃它。


你能做的,就是在你的Form2类中放入一个对"父"Form1的引用。

这里有一个例子

public partial class Form2 : Form
{
    public Form2(Form1 parent)
    {
        InitializeComponent();
        this.Parent = parent;
    }
    Form1 Parent;
    private void button1_Click(object sender, EventArgs e)
    {
        Parent.pictureBox.Visible= true;
    }
    ...
}

创建一个表单实例:

public Form1 frm1 = new Form1();

这显然不是你的页面中已经有的表单,你可以简单地通过它的ID访问它。

根据您编写的代码,它将创建所需表单的新实例,而不是采用现有的打开表单。因此,要识别包含目标图片框的现有打开表单,您需要目标表单和控制表单通过父表单或MDI父表单相关联。假设MDI父表单的情况(即控制表单是目标表单的MDI父表单),您需要以下代码来识别现有的打开表单:

foreach (Form frm in MdiChildren)
        {
            if (frm is myTargetForm)
            {
                //do your code to find control using id of picture box and change the required properties
            }
        }