2015-03-19 13 views
0

Я разрабатываю приложение winforms, и я помещаю дочернюю форму mdi в splitcontainer.panel1. , когда я хочу закрыть текущий mdi-ребенок, чтобы открыть другой, я не могу получить дочернюю форму. я использую этот код, чтобы открыть E нового ребенка, но я хочу получить текущий ребенок, чтобы закрыть его:Закрытие mdi child в SplitContainer

  Accueil accueil = new Accueil(); 
      accueil.MdiParent = this; 
      accueil.TopLevel = false; 
      this.splitContainer1.Panel1.Controls.Add(accueil); 
      accueil.WindowState = FormWindowState.Maximized; 
      accueil.Size = this.splitContainer1.Panel1.ClientSize; 
      accueil.MinimizeBox = false; 
      accueil.MaximizeBox = false; 
      accueil.ControlBox = false; 
      accueil.Width = this.splitContainer1.Panel1.Width; 
      accueil.Height = this.splitContainer1.Panel1.Height; 
      accueil.Show(); 

ответ

1

Ввод дочернего окна MDI в разделенном контейнер не имеет никакого смысла. Вы превращаете форму в простой элемент управления, устанавливая для свойства TopLevel значение false. Лучше не терять ссылку. Но вы, вероятно, будет впереди с:

while (splitContainer1.Panel1.Controls.Count > 0) 
     splitContainer1.Panel1.Controls[0].Dispose(); 
    var accueil = new Accueil(); 
    accueil.TopLevel = false; 
    accueil.Dock = DockStyle.Fill; 
    accueil.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
    accueil.Visible = true; 
    this.splitContainer1.Panel1.Controls.Add(accueil); 

ли рассмотреть возможность использования UserControl вместо этого, это разумный подход с наименее вероятной долгосрочной confuzzlement.

+0

Я должен думать об этом с самого начала, он работает сейчас. Благодарю вас. – Imoum