在项目开发中经常遇到父级窗体嵌入子窗体所以写了一个例子程序,顺便大概划分了下界面模块和配色,不足之处还望指点
主窗体窗体采用前面一篇博客设计扁平化窗体
主要思路
1 this.IsMdiContainer=true;//设置父窗体是容器 2 Son mySon=new Son();//实例化子窗体 3 mySon.MdiParent=this;//设置窗体的父子关系 4 mySon.Parent=pnl1;//设置子窗体的容器为父窗体中的Panel 5 mySon.Show();//显示子窗体,此句很重要,否则子窗体不会显示
///
/// 显示窗体
///
///
///
public void ShowForm(System.Windows.Forms.Panel panel, System.Windows.Forms.Form frm)
{
lock (this)
{
try
{
if (this.currentForm != null && this.currentForm == frm)
{
return;
}
else if (this.currentForm != null)
{
if (this.ActiveMdiChild != null)
{
this.ActiveMdiChild.Hide();
}
}
this.currentForm = frm;
frm.TopLevel = false;
frm.MdiParent = this;
panel.Controls.Clear();
panel.Controls.Add(frm);
frm.Show();
frm.Dock = System.Windows.Forms.DockStyle.Fill;
this.Refresh();
foreach (Control item in frm.Controls)
{
item.Focus();
break;
}
}
catch (System.Exception ex)
{
//
}
}
}
///
/// 子窗体界面单例元素
///
public static Form1 form1 = null;
public static Form2 form2 = null;
public static Form3 form3 = null;
public static Form4 form4 = null;
public static Form5 form5 = null;
1 //实例化子窗体界面 2 form1 = Form1.GetIntance; 3 form2 = Form2.GetIntance; 4 form3 = Form3.GetIntance; 5 form4 = Form4.GetIntance; 6 form5 = Form5.GetIntance;
private static MainForm formInstance;
public static MainForm GetIntance
{
get
{
if (formInstance != null)
{
return formInstance;
}
else
{
formInstance = new MainForm();
return formInstance;
}
}
}
private bool initButton()
{
try
{
this.button1.BackColor = Color.FromArgb(53, 66, 83);
this.button2.BackColor = Color.FromArgb(53, 66, 83);
this.button3.BackColor = Color.FromArgb(53, 66, 83);
this.button4.BackColor = Color.FromArgb(53, 66, 83);
this.button5.BackColor = Color.FromArgb(53, 66, 83);
this.button6.BackColor = Color.FromArgb(53, 66, 83);
this.button7.BackColor = Color.FromArgb(53, 66, 83);
this.button8.BackColor = Color.FromArgb(53, 66, 83);
this.button9.BackColor = Color.FromArgb(53, 66, 83);
this.button10.BackColor = Color.FromArgb(53, 66, 83);
this.button11.BackColor = Color.FromArgb(53, 66, 83);
}
catch (Exception ex)
{
return false;
}
return true;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
this.initButton();
this.button1.BackColor = Color.FromArgb(95, 129, 174);
Monitor.Enter(this.lockObj);
if (!formSwitchFlag)
{
formSwitchFlag = true;
this.ShowForm(pnlCenter,form1);
formSwitchFlag = false;
}
else
{
return;
}
}
catch (System.Exception ex)
{
//
}
finally
{
Monitor.Exit(this.lockObj);
}
}