c# 一个窗体继承另一个窗体的panel

我想在form2中控制form1中panel的显示和关闭。。。... 我想 在form2中控制form1中panel的显示和关闭。。。 展开
 我来答
sniper2003
2011-12-21 · TA获得超过1882个赞
知道小有建树答主
回答量:775
采纳率:100%
帮助的人:662万
展开全部
具体的代码我已经很久没写了,以前都是作为练习教给别人的。

但是可以大概给你个实现的流程,一级做winform窗体间数据交互的一些原则。
1、设计一个接口,该接口中只有一个可读的属性:
Panel Pnl{get;}
2、让你的form1实现这个接口,并在get方法中返回这个panel的引用
3、将form1以这个接口的引用传递给form2
4、在form2中获取到接口对象的引用,并操作这个panel

或许你会问,怎么这么麻烦,直接把form1传过来不就行了吗?
是的,你完全可以这样做,但是要记得,如果你尝试这样做了,那么你将得到的结果将是可怕的。当你的业务越来越复杂时,对于form1的更改也将越来越多,这可能导致任何一个其他的更改都可能影响到你之前的业务代码。造成时间效率上的浪费。

上面的实现是一个简单的代理模式,主要是用于隐藏本体,并传递给自身的一个替代品给使用者,从而达到让使用者只了解到他业务需要的对象,而不是全部。

同样的,在多个窗体进行数据交互中,可以使用观察者模式(个人比较青睐)。
追问
可以简写几句代码不?才学习没多久的新手
追答
接口:
public interface IMyPanel{
Panel Pnl{get;}
}

//form1
public class form1:Form,IMyPanel{
public Panel Pnl{get{ return this.Panel1;}}//这块返回的就是你窗体中的那个panel的引用
}

//定义的form2
public class Form2:Form{
public IMyPanel MyPanel{get;set;}
}

//在form1中调用form2
private void ShowForm2(){
Form2 form2 = new Form2();
form2.MyPanel = this.Pnl;
form2.Show()
}
风声正乱
2011-12-21 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:174
采纳率:0%
帮助的人:165万
展开全部
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
_form = this;
}

private static Form1 _form;

public static Form1 getInstance()
{
if (_form == null)
{
_form = new Form1 ();
}

return _form;
}

public void OpenorClosePanel()
{
this.panel1.Visible = this.panel1.Visible ?false :true;
}

private void button1_Click(object sender, EventArgs e)
{
Form2 frm = new Form2();
frm.Show();
}
}

public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Form1 frm = Form1.getInstance();
frm.OpenorClosePanel();
}
}
楼上的回答不错,不过针对这里完全可以开放一个方法给对方操作
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
三月雨滴_
2011-12-21 · TA获得超过606个赞
知道小有建树答主
回答量:484
采纳率:57%
帮助的人:204万
展开全部
你在form2 中new一个form1 并show出来,你的form1的panel要设置为public的,在form2中form1.panel.visible=true or false 就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式