0

嗨,我在 C# 中使用 Windows 窗体。我正在尝试将图片的可见属性从主窗体修改为另一个。最初,图片框的可见属性设置为 false。在从另一个窗体单击按钮时,图片框的可见属性被修改为 true。

这是用 Form2 方法编写的代码:

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

3 回答 3

2

Form1是一个实例类型,所以当你这样做时

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

您实际上只是在创建一个Form1与原始 完全无关的新实例Form1,更改图片框的可见属性,然后将其丢弃。


您可以做的是Form1在您的Form2班级中引用“父母”。

这是一个例子

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;
    }
    ...
}
于 2013-03-22T15:55:27.877 回答
0

在那里你创建一个表单的实例:

public Form1 frm1 = new Form1();

那么这显然不是您在页面中可能已经拥有的表单,您可以简单地通过其 ID 访问它。

于 2013-03-22T15:58:20.617 回答
0

根据您编写的代码,它将创建所需表单的新实例,而不是采用现有的打开表单。因此,要识别包含目标图片框的现有打开表单,您需要目标表单和控制表单通过父表单或 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
            }

        }
于 2013-03-22T16:11:02.923 回答