指定为此表单的MdiParent的表单不是MdiContainer

时间:2014-03-24 19:50:32

标签: c# .net winforms mdi mdichild

我正在研究一个库存软件,突然发现我需要一些主要形式,我应该打开所有其他形式,所以我创建了一个名为frmMainPanel并使用菜单条将其链接到另一个我成功在链接它们但它们在主窗体外打开时,我使用以下代码链接它们

使用以下方式链接frmSaleInvoice表单:

frmSaleInvoice childForm = new frmSaleInvoice();
cs.show()

现在我意识到我应该让他们成为主要形式的孩子,所以我尝试使用以下代码:

frmSaleInvoice childForm = new frmSaleInvoice();

childForm.MdiParent = this;
childForm.Show();

但它说**" Form that was specified to be the MdiParent for this form is not an MdiContainer."**

任何人都可以帮助我,我错了,我怎么能把一个名为frmSaleInvoice的表格制作成名为frmMainPanel的其他形式的孩子

5 个答案:

答案 0 :(得分:19)

Mdi父级必须将IsMdiContainer属性设置为True。您可以在frmMainPanel表单的设计时设置此属性。

答案 1 :(得分:8)

您应该为父表单设置IsMdiContainer = true

答案 2 :(得分:0)

只需在代码中写下IsMdiContainer = true;

Form2 fL = new Form2();
fL.MdiParent = this;
fL.Show();

Form2是您要显示的表单的名称。

答案 3 :(得分:0)

private void tsbCadastrar_Click(object sender, EventArgs e)
    {
        try
        {
            frmCliente cliente = null;
            foreach (Form frm in this.MdiChildren)
            {
                if (frm is frmCliente)
                {
                    cliente = (frmCliente)frm;
                    break;
                }
            } 
            if (cliente == null)
            {
                cliente = new frmCliente();
                cliente.MdiParent = this; //Remove this line in case the IsMdiParent = True 
                cliente.Show();
            }
            cliente.Focus();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Não foi possivel se conectar ao formulario devido ao erro: " + ex.Message,
                "Aviso",
                MessageBoxButtons.OK,
                MessageBoxIcon.Information);
        }
    }

答案 4 :(得分:-2)

您无需将childForm设置为true即可 试试这个:

childForm.MdiParent = (name of your mdiparent form).ActiveForm;
childForm.Show();