嗨,我在 C# 中使用 Windows 窗体。我正在尝试将图片的可见属性从主窗体修改为另一个。最初,图片框的可见属性设置为 false。在从另一个窗体单击按钮时,图片框的可见属性被修改为 true。
这是用 Form2 方法编写的代码:
private void button_Click(object sender, EventArgs e)
{
public Form1 frm1 = new Form1();
frm1.pictureBox.Visible= true;
}
嗨,我在 C# 中使用 Windows 窗体。我正在尝试将图片的可见属性从主窗体修改为另一个。最初,图片框的可见属性设置为 false。在从另一个窗体单击按钮时,图片框的可见属性被修改为 true。
这是用 Form2 方法编写的代码:
private void button_Click(object sender, EventArgs e)
{
public Form1 frm1 = new Form1();
frm1.pictureBox.Visible= true;
}
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;
}
...
}
在那里你创建一个表单的实例:
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
}
}