WINFORM 子窗体调用父窗体解决方案
WINFORM 子窗体调用父窗体

右侧区域是嵌套的子窗体,点击左边按钮的时候可以切换不同的子窗体
但是如果是点子窗体的按钮切换就不管用了?为啥
子窗体代码按钮点击
FrmMain frmMain = new FrmMain();
FrmView frmView = new FrmView();
frmMain.ChangePanel(frmView);
父窗体函数
public void ChangePanel(Form frm)
{
frm.FormBorderStyle = FormBorderStyle.None;
frm.Dock = DockStyle.Fill;
frm.TopLevel = false;
this.pnlMain.Controls.Clear();
this.pnlMain.Controls.Add(frm);
frm.Show();
}
------解决思路----------------------
while少打了
右侧区域是嵌套的子窗体,点击左边按钮的时候可以切换不同的子窗体
但是如果是点子窗体的按钮切换就不管用了?为啥
子窗体代码按钮点击
FrmMain frmMain = new FrmMain();
FrmView frmView = new FrmView();
frmMain.ChangePanel(frmView);
父窗体函数
public void ChangePanel(Form frm)
{
frm.FormBorderStyle = FormBorderStyle.None;
frm.Dock = DockStyle.Fill;
frm.TopLevel = false;
this.pnlMain.Controls.Clear();
this.pnlMain.Controls.Add(frm);
frm.Show();
}
------解决思路----------------------
Control p = this;
FrmMain frmMain=null;
do{
p = p.Parent;
if(p is FrmMain ){
frmMain = (FrmMain)p;
break;
}
}
while(p!=null)
if(frmMain !=null){
FrmView frmView = new FrmView();
frmMain.ChangePanel(frmView);
}
while少打了