2013-01-22 91 views
0

我试图用另一种形式创建窗体实例,然后将该窗体添加到主窗体中。但我添加的表单没有显示。我想在所有控件的顶部显示该表单。如何将一个窗体添加到另一个窗体winform项目

这里是我的代码

BBA.Controls.ExecludeSpecialist ucExecludeSpecialist = null; 
Form frmContainer = null; 

private void btnExclude_Click(object sender, EventArgs e) 
{ 
    if (ucExecludeSpecialist != null) 
    { 
     if (frmContainer != null) 
     { 
      frmContainer.Controls.Remove(ucExecludeSpecialist); 
      ucExecludeSpecialist = null; 
     } 
    } 

    if (frmContainer != null) 
    { 
     this.Controls.Remove(frmContainer); 
     frmContainer = null; 
    } 

    frmContainer = new Form(); 
    frmContainer.ControlBox = false; 
    frmContainer.StartPosition = FormStartPosition.Manual; 
    frmContainer.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

    ucExecludeSpecialist = new BBA.Controls.ExecludeSpecialist(); 
    ucExecludeSpecialist.SaveClicked += 
     new BBA.Controls.ExecludeSpecialist.SaveComplete(OnSaveClicked); 
    ucExecludeSpecialist.CloseClicked += 
     new BBA.Controls.ExecludeSpecialist.CloseComplete(OnCloseClicked); 
    ucExecludeSpecialist.BringToFront(); 
    frmContainer.Height = ucExecludeSpecialist.Height; 
    frmContainer.Width = ucExecludeSpecialist.Width; 
    //frmContainer.Top = this.Height - frmContainer.Height/2; 
    //frmContainer.Left = this.Height - frmContainer.Height/2; 
    frmContainer.BringToFront(); 
    frmContainer.TopLevel = false; 
    frmContainer.Controls.Add(ucExecludeSpecialist); 
    this.Controls.Add(frmContainer); 
} 

请指导我如何显示在另一种形式在中心的所有控件的顶部这种形式。谢谢

+0

检查[这](http://stackoverflow.com/questions/1351322/c-sharp- winform-forms-in-form)out – AbZy

+0

尝试添加frmContainer.Show();到您的代码 – Kooki

+0

是的,我没有表格显示,但是我的表单中有一个数据网格,因此表单无法显示在数据网格之上。那里有任何修复吗?我想把我的表格定位在主表单的中心,我的表单将在其他控制之上。我使用前面的,但没有工作。 – Thomas

回答

1

如果我理解你的评论正确,你的问题是DataGrid覆盖你最近添加的表单?尝试:

后,您必须添加

frmContainer.Show(); 

表单建议立即进行删除可见。之后,你应该解决您的问题,如果你以后调用frmContainer.Show();

实例调用ucExecludeSpecialist.BringToFront();

private void button1_Click(object sender, EventArgs e) 
    { 

     frmContainer = new Form(); 
     frmContainer.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

     frmContainer.Height = this.Height/2; 
     frmContainer.Width = this.Width/2; 
     frmContainer.BackColor = Color.Red; 
     frmContainer.TopLevel = false; 
     this.Controls.Add(frmContainer); 
     frmContainer.Show(); 
     frmContainer.BringToFront(); 
    } 
相关问题