简体   繁体   中英

Not able to show a winform after removing from splitter panel

I have 2 forms (Form1 and Form2). Form1 has a splitter with two panels. I have added Form2 in the panel2 of the splitter control. I want to pop in and pop out Form2 without creating a new instance of Form2. Please find the code snippet below:

public partial class Form1 : Form
{
 private Form2 form2 = null;
 public Form1()
 {
     InitializeComponent();
 }
 private void Form1_Load(object sender, EventArgs e)
 {
        form2 = new Form2();
        form2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        form2.Dock = DockStyle.Fill;
        form2.TopLevel = false;
        splitContainer1.Panel2.Controls.Add(form2);
        form2.Pop += new EventHandler(PopForm);
        form2.Show();
 }
 //button click event handler from Form2
 private void PopForm(object sender, EventArgs e)
 {
     Button b = sender as Button;
     if(b.Text.ToUpper() == "POPOUT")
     {
         splitContainer1.Panel2Collapsed = true;
         splitContainer1.Panel2.Controls.Remove(form2);
         //need to show the form without creating a new instance to maintain state
         form2 = new Form2();
         form2.SelectedMailId = 1;
         form2.Pop += new EventHandler(PopForm);
         form2.SetButtonText = "PopIn";
         form2.Show();                
     }
     else
     {
         //this works fine
         splitContainer1.Panel2Collapsed = false;
         form2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
         form2.Dock = DockStyle.Fill;
         form2.TopLevel = false;
         splitContainer1.Panel2.Controls.Add(form2);
     }
   }
 }

How can I show the Form2 without creating a new instance when popping out?

While popout setup the form border styled and toplevel

 if(b.Text.ToUpper() == "POPOUT")
 {
     splitContainer1.Panel2Collapsed = true;
     splitContainer1.Panel2.Controls.Remove(form2);
     //need to show the form without creating a new instance to maintain state
     form2.TopLevel = true;
     form2.FormBorderStyle = FormBorderStyle.Sizable;
     // setup your settings
     form2.Show();                
 }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM