做界面切换时是在同一个form里用panel来放入控件来进行界面切换的 但是当所需界面很多时就form就显得很乱 我现在是想将所需要的多个界面分成多个子窗体,当点击按钮时,子窗体就会嵌入到主窗体中,这应该要怎么做
private void btnNewButtonEvent (object sender, EventArgs e)
{
ShowForm (sender as NewPictureBox);
}
private void ShowForm (NewPictureBox sender)
{
try
{
this.pan_DAccount.Visible = false;
this.Cursor = Cursors.WaitCursor;
Type t = SetUI (sender.ShowFormName);
if (t == null)
{
return;
}
Form f = (Form) Activator.CreateInstance (t, true);
if (f != null)
{
NewMethod (f);
}
}
catch (Exception ex)
{
}
finally
{
this.Cursor = Cursors.Default;
}
}
public Type SetUI (string uiName)
{
try
{
Assembly assmbly = Assembly.LoadFrom ("TengePay.exe");
Type type = assmbly.GetType ("TengePay." + uiName);
return type;
}
catch (Exception ex)
{
throw ex;
}
}
public void NewMethod (Form frmp)
{
bool isOpen = true;
foreach (Form frm in this.MdiChildren) //遍历已打开的MDI
{
if (frm.Name == frmp.Name)
{
frm.Activate();//赋予焦点
frm.WindowState = FormWindowState.Normal;//设置窗体最大化
isOpen = false;
break;
}
this.BeginInvoke (new ColseFormHander (delegate()
{
if (frm.Name != this.Name)
frm.Close();
}) );
}
if (frmp.Name == this.Name)
{
this.Dispose();
return;
}
if (!isOpen) //如果没有找到相同窗体则打开新窗体
{
return;
}
if (frmp.Tag != null && frmp.Tag.ToString() == "No")
{
this.BeginInvoke (new EventerFromDelegate (delegate
{
frmp.Dock = DockStyle.Fill;
(frmp as BaseForm).ResultPrentForm = this;
frmp.ShowDialog();
}) );
}
else
{
frmp.MdiParent = this;
frmp.Dock = DockStyle.Fill;
frmp.Show();
frmp.Activate();
}
}