如何在c#winform应用程序中将子窗口置于前面?

时间:2013-12-03 11:32:28

标签: c# winforms

当我点击主窗体中的按钮时,我希望在主窗体中打开另一个窗体。到目前为止,这使用以下代码:

private void btnOpenChildForm(object sender, EventArgs e)
{       
    ChildForm Form = new ChildForm();
    this.IsMdiContainer = true;
    Form.MdiParent = this;

    Form.Show();
}

问题:

主窗体的按钮和其他控件仍可在子窗体中显示。我用Form.BringToFront()试了一下,但它也没用。

更新

在决定更改GUI设计之后,这是我迄今为止所做的工作。我拿了一个ToolStripMenuItem而不是之前的按钮。

一个全局变量(我想我必须改进它)

    ChildForm frmChildForm;

点击方法:

    private void frmChildFormToolStripMenuItem_Click(object sender, EventArgs e)
            {

                if (frmChildForm  == null || frmChildForm .IsDisposed == true)
                {
                    frmChildForm  = new ChildForm();

                }

                this.IsMdiContainer = true;
                frmChildForm.MdiParent = this;
                frmChildForm.WindowState = FormWindowState.Maximized;
                frmChildForm.Show();

            }   

4 个答案:

答案 0 :(得分:1)

我想,您需要使用Focus()方法。

private void btnOpenChildForm(object sender, EventArgs e)
{
    ChildForm Form = new ChildFrom();
    this.IsMdiContainer = true;
    Form.MdiParent = this;
    Form.Show();
    Form.focus();
}

答案 1 :(得分:1)

答案 2 :(得分:1)

就像我说的那样理想情况下,MDI应该只有菜单控件和状态栏,这就是MDI的意图。只是作为其他形式的容器而没有别的。

因此,如果您只想在父窗体上打开子窗体,请执行此操作(SDI方式)。

private void btnOpenChildForm(object sender, EventArgs e)
{   
    //if you just want the form to show on top do not make the MDI

    ChildForm Form = new ChildForm();
    Form.Show();
    Form.Owner=this;    
}

答案 3 :(得分:0)

您可以从http://www.codeproject.com/Articles/7571/Creating-MDI-application-using-C-Walkthrough尝试此操作:

ChildForm Form = ChildForm.GetChildInstance();
Form.MdiParent = this;
Form.Show();
Form.BringToFront();