看来我采用了一种不同的结构设计方式。我的项目有3个主要表单(表单父表单,表单菜单和子表单)。
父级的左侧面板包含菜单表单,另一个左侧的面板包含子表单。
工作方式:
父窗体将在左侧面板中打开菜单窗体。当菜单显示在左侧面板上时,单击菜单应在主面板中打开一个子级。(两个面板都是父表单)。
public Home()
{
InitializeComponent();
panelmenus.Controls.Clear();
frmmenus menu = new frmmenus();
menu.TopLevel = false;
menu.Dock = DockStyle.Fill;
panelmenus.Controls.Add(menu);
menu.Show();
}
private void btnsetting_Click(object sender, EventArgs e)
{
Forms.frmEmployee employee = new Forms.frmEmployee()
{
Dock = DockStyle.Fill,
TopLevel = false,
};
Home main = new Home();
main.pncontainer.Controls.Add(employee);
employee.Show();
}
有可能这样做吗?因为我已经来过这种方式。
如果还有其他方法可以解决此问题,请给我。
我花了几个小时解决这个问题。
非常感谢大家。
这是一种可能的方法。
您实例的父级frmmenus
将是一个面板。从该面板中,您可以调用FindForm()以获得对主Home
实例的引用。接下来,您可以使用Controls.Find()搜索名为“ pncontainer”的面板。从那里,只需清除面板并向其中添加所需的表单实例即可:
private void btnsetting_Click(object sender, EventArgs e)
{
frmEmployee employee = new frmEmployee()
{
Dock = DockStyle.Fill,
TopLevel = false,
};
Form frm = this.Parent.FindForm();
Control match = frm.Controls.Find("pncontainer", true).FirstOrDefault();
if (match != null && match is Panel)
{
Panel p = (Panel)match;
p.Controls.Clear();
p.Controls.Add(employee);
employee.Show();
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句