首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在form1中从另一个form2显示/隐藏图片框

在form1中从另一个form2显示/隐藏图片框
EN

Stack Overflow用户
提问于 2020-02-01 16:42:28
回答 2查看 105关注 0票数 0

我有button1在form1中,当点击它时,它应该在form2中隐藏图片框

我试着在form2中设置一个按钮

代码语言:javascript
运行
复制
picturebox1.hide();

然后从form1调用这个按钮

代码语言:javascript
运行
复制
new form1().button1.PerformClick();

我也试着这个

代码语言:javascript
运行
复制
            new home().pictureBox1.Show();

但不工作

这样我就会被问到是否还有其他方式来显示/隐藏其他形式的picturebox?

EN

回答 2

Stack Overflow用户

发布于 2020-02-01 16:50:22

首先,不要尝试跨窗体调用按钮。相反,只需在表单上设置一个方法就可以完成您想要的任务:

代码语言:javascript
运行
复制
public void HidePicture()
{
    picturebox1.hide();
}

基本上,将您的逻辑与调用该逻辑的UI输入分开。

但除此之外,并专注于你面临的主要问题,考虑一下这里发生的事情的逻辑:

代码语言:javascript
运行
复制
new form1().HidePicture();

这将成功地隐藏图片,但它隐藏在一个没有显示的新表单上。这就创建了一种全新的形式:

代码语言:javascript
运行
复制
new form1()

它没有引用屏幕上已经有form1的任何实例。你得参考一下。这些表格有何联系?form1是否在某个地方启动form2实例?如果是这样的话,那么form2需要保存对启动它的表单的引用。例如,如果您在form2上有这个

代码语言:javascript
运行
复制
private form1 ParentForm { get; set; }

public form2(form1 parent)
{
    this.ParentForm = parent;
}

然后,当您最初创建form2实例以显示给用户时,您将传递该引用:

代码语言:javascript
运行
复制
var childForm = new form2(this);
childForm.Show();

现在,form2的实例有了对创建它的form1实例的引用。在那里,您可以调用该实例上的方法:

代码语言:javascript
运行
复制
this.ParentForm.HidePicture();

不管您的表单是如何设置的,无论哪种表单生成了其他表单,您都只需要保持对其他表单实例的依赖关系的引用。

票数 1
EN

Stack Overflow用户

发布于 2020-02-01 16:53:59

最简单的方法是使控件保持静态。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60018996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档