我有button1在form1中,当点击它时,它应该在form2中隐藏图片框
我试着在form2中设置一个按钮
picturebox1.hide();然后从form1调用这个按钮
new form1().button1.PerformClick();我也试着这个
new home().pictureBox1.Show();但不工作
这样我就会被问到是否还有其他方式来显示/隐藏其他形式的picturebox?
发布于 2020-02-01 16:50:22
首先,不要尝试跨窗体调用按钮。相反,只需在表单上设置一个方法就可以完成您想要的任务:
public void HidePicture()
{
picturebox1.hide();
}基本上,将您的逻辑与调用该逻辑的UI输入分开。
但除此之外,并专注于你面临的主要问题,考虑一下这里发生的事情的逻辑:
new form1().HidePicture();这将成功地隐藏图片,但它隐藏在一个没有显示的新表单上。这就创建了一种全新的形式:
new form1()它没有引用屏幕上已经有form1的任何实例。你得参考一下。这些表格有何联系?form1是否在某个地方启动form2实例?如果是这样的话,那么form2需要保存对启动它的表单的引用。例如,如果您在form2上有这个
private form1 ParentForm { get; set; }
public form2(form1 parent)
{
this.ParentForm = parent;
}然后,当您最初创建form2实例以显示给用户时,您将传递该引用:
var childForm = new form2(this);
childForm.Show();现在,form2的实例有了对创建它的form1实例的引用。在那里,您可以调用该实例上的方法:
this.ParentForm.HidePicture();不管您的表单是如何设置的,无论哪种表单生成了其他表单,您都只需要保持对其他表单实例的依赖关系的引用。
发布于 2020-02-01 16:53:59
最简单的方法是使控件保持静态。
https://stackoverflow.com/questions/60018996
复制相似问题