i have a main form that has a button, when click a subform1 will open. in subform1 theres another button that will open subform2 in main form..i have this code in subform1.

{
            profilefrm prf = null;
            foreach (Form existingForm in this.MdiChildren)
            {
                prf = existingForm as profilefrm;
                if (prf != null)
                    break;
            }
            if (prf == null)
            {
                prf = new profilefrm();
                prf.MdiParent = this;
                prf.Show();
                prf.Location = new Point(101, 90);
                this.Text = "MyPersonalDietaryGuidance-MY PDG";
            }
            else
                prf.Activate();
            this.Text = "MyPersonalDietaryGuidance-MY PDG";
        }

then got this error...
Form that was specified to be the MdiParent for this form is not an MdiContainer.
Parameter name: value

main form is a container...property is set---> isMDIcontainer=true;

my goal is open subform via other subform i main form,, THANKS

Try that one... You'll need to check which one is Mdi or not...

Form m;
            if (Exists("xxx", out m))
            {
                m.Activate();
            }
            else
            {
               m = new xxx();
                m.Name = "xxx";
                m.MdiParent = this.MdiParent; //this.MdiParent.mdiparent.mdiparent bla bla               
 m.Show();
            }
        }
        public bool Exists(string name, out Form found)
        {
            foreach (Form subform in this.MdiParent.MdiChildren)
            {
                if (subform.Name == name)
                {
                    found = subform;
                    return true;
                }
            }
            found = null;
            return false;
        }

Edited 5 Years Ago by symeramon: n/a

I am having a similar problem. I would like for 2 different sub forms to open in the mdi form. I can get 1 to open but not the 2nd.

public partial class MainForm : Form
    {
        public MainForm()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Subform1 apple = new Subform1(this);
            apple.Show();
        }
public partial class Subform1 : Form
    {
        
        public Subform1(MainForm parent)
        {
            InitializeComponent();
            MdiParent = parent;
        }
        
        
    }

I would like for subform2 to be created by a button from subform1 with mainform as the mdi parent. How do I code this.

By writing the code that I have posted above! LOL... :D You didn't even look at it??

I still can't get the 2nd subform into the mdi form. I would like the 2nd subform to be created after double clicking an item in subform1 listbox.

public partial class Subform1 : Form
    {
     
    public Subform1(MainForm parent)
    {
    InitializeComponent();
    MdiParent = parent;
    }
     private void listBox1_DoubleClick(object sender, EventArgs e)
        {
            subform2 melon = new subform2();            
            melon.TopLevel = false;
            melon.Show();
        }
     
    }

If I set TopLevel to true then then a window pops up but a window shows on the taskbar also. If I set it to false then no taskbar window appears but I don't see any new window within my mdi form.

Edited 5 Years Ago by MagnetoM: n/a

Try that one... You'll need to check which one is Mdi or not...

Form m;
            if (Exists("xxx", out m))
            {
                m.Activate();
            }
            else
            {
               m = new xxx();
                m.Name = "xxx";
                m.MdiParent = this.MdiParent; //this.MdiParent.mdiparent.mdiparent bla bla               
 m.Show();
            }
        }
        public bool Exists(string name, out Form found)
        {
            foreach (Form subform in this.MdiParent.MdiChildren)
            {
                if (subform.Name == name)
                {
                    found = subform;
                    return true;
                }
            }
            found = null;
            return false;
        }

excuse me but what is this "xxx"????

I finally got it too work by using the code posted by symeramon above

m.MdiParent = this.MdiParent; //this.MdiParent.mdiparent.mdiparent bla bla

Not sure how I overlooked it.

Edited 5 Years Ago by MagnetoM: n/a

I finally got it too work by using the code posted by symeramon above

m.MdiParent = this.MdiParent; //this.MdiParent.mdiparent.mdiparent bla bla

Not sure how I overlooked it.

can you post your code here mr magnetom???? thanks...

public partial class MainForm : Form
{
    public MainForm()
    {
         InitializeComponent();
    }
     // create the 1st child form
    private void button1_Click(object sender, EventArgs e)
    {
         Subform1 apple = new Subform1(this);
         apple.Show();
    }
}
public partial class Subform1 : Form
{
     //  constructor for 1st child form
    public Subform1(MainForm parent)
    {
         InitializeComponent();
         MdiParent = parent;
    }
    
    //create the 2nd child form
    private void listBox1_DoubleClick(object sender, EventArgs e)
    {
         subform2 melon = new subform2();
         melon.MdiParent = this.MdiParent;
         melon.Show();
    }
     
}

I think the indented is off but this is the code

Edited 5 Years Ago by MagnetoM: n/a

are your forms not duplicating?? i mean when u click the button again and again it will continue to open subforms right???

use my code on the first page.. that will work.. the for each code :p

how do you mark this as solved????

Edited 5 Years Ago by kapojian: n/a

This article has been dead for over six months. Start a new discussion instead.