MDI Form detecting with a child form is added or removed

前端 未结 8 692
心在旅途
心在旅途 2020-12-21 08:11

Is there an event I can use to tell if a child form has been added or removed from the MDI parent?

相关标签:
8条回答
  • 2020-12-21 08:35

    I realised this is many years too late however as the answers here helped me solve this I though I would mention this works fine using the MdiChildren array in .net 4. The only thing you need to do is check if the form is disposing or disposed to tell if its closing.

    ie:

        private void frmContainer_MdiChildActivate(object sender, EventArgs e)
        {
            tabWindows.RefreshLayout(this.MdiChildren.ToList());
        }
    
        public void RefreshLayout(List<Form> forms)
        {
            this.nextButtonLeft = 1;
            panel1.Controls.Clear();
            foreach (Form frm in forms)
            {
                if (!(frm.Disposing || frm.IsDisposed)) { addButton(frm); }
            }
        }
    
    0 讨论(0)
  • 2020-12-21 08:41

    Yes. On your main MDI form, wire up to the MdiChildActivated Event.

    Like so:

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
                this.MdiChildActivate += new EventHandler(Form1_MdiChildActivate);
            }
    
            void Form1_MdiChildActivate(object sender, EventArgs e)
            {
                MessageBox.Show("Activated");
            }
    
            private void addToolStripMenuItem_Click(object sender, EventArgs e)
            {
                Form form2 = new Form2();
                form2.MdiParent = this;
                form2.Show();
            }
        }
    

    And that event will fire when the child form is both activated or deactivated.

    0 讨论(0)
提交回复
热议问题