Невозможно отобразить winform после удаления с разделительной панели - PullRequest
0 голосов
/ 26 октября 2018

У меня есть 2 формы (Форма 1 и Форма 2).Form1 имеет сплиттер с двумя панелями.Я добавил Form2 в панели 2 элемента управления сплиттером.Я хочу, чтобы открыть и выдвинуть Form2 без создания нового экземпляра Form2.Пожалуйста, найдите фрагмент кода ниже:

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);
     }
   }
 }

Как я могу показать Form2 без создания нового экземпляра при выходе?

1 Ответ

0 голосов
/ 26 октября 2018

Во время установки всплывающего окна граница формы имеет стиль и верхний уровень

 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();                
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...