2011-04-08 4 views
4

Я создаю приложение для обучения детей, при нажатии на кнопку на панели, я хочу показать разные формы в одном и том же месте панели. Можете ли вы помочь с любыми сквозными или учебными ссылками?Как использовать несколько форм в одной панели Csharp на одной панели форм Windows?

+3

Сообщения, которые нуждаются в прямой помощи кодирования должен быть размещен на StackOverflow. Эта вертикаль предназначена для профессиональных дискуссий по разработке программного обеспечения. –

ответ

6

Этот вопрос должен был быть размещен на веб-сайте Stackoverflow, а не здесь.

Но вы можете использовать этот подход для обработки корпуса.

  subForm = new SubFormYouWantToLoad(); 
      subForm.TopLevel = false; 
      subForm.FormBorderStyle = FormBorderStyle.None; 
      ContainerPanel.Controls.Add(subForm , 0, 1); 
      subForm .Visible = true; 

Вы можете добавить этот код, когда нажмете на конкретную кнопку. Здесь каждая подформация добавляется к панели в качестве элемента управления. Вы должны удалить подчиненную форму из контрольного списка панели перед добавлением другой подформы. Для этого лучше удалить, закрыть и удалить первый.

 ContainerPanel.Controls.Remove(activeform); 
     activeform.Close(); 
     activeform.Dispose(); 
+0

Это разновидность без MDI. Спасибо :) – dariol

+0

Ваш ответ не является хорошим решением и вводит в заблуждение. Вы не должны добавлять элемент управления верхнего уровня в элемент управления. – VahidNaderi

+0

@Vimal Raj subForm Элементы управления не отображаются в панели, кроме пустого Окно –

0

Вы можете создать несколько форм в качестве пользовательских элементов управления или элемент управления, который наследуется от панели. Затем у вас есть родительская форма с панелью для хранения пользовательских элементов управления. Затем вы можете изменить активный пользовательский элемент управления в контейнере, когда панель должна быть изменена.

Существует руководство по msdn для создания пользовательских элементов управления.

http://msdn.microsoft.com/en-us/library/a6h7e207(v=vs.71).aspx

3

Вместо форм использовать пользовательские элементы управления и загружать их в панели

выборки, если вы хотите, чтобы показать UserControl1

panel1.Controls.Clear(); 
panel1.Visible = true; 
UserControl1 usr1 = new UserControl1(); 
usr1.Show(); 
panel1.Controls.Add(usr1); 

Если usercontrol2

panel1.Controls.Clear(); 
panel1.Visible = true; 
UserControl1 usr2 = new UserControl2(); 
usr2.Show(); 
panel1.Controls.Add(usr2); 
+0

После отображения формы в панели другой формы она не закрывается. Я использую ActiveForm.Close(); то он закрывает основное приложение. Что я могу сделать, чтобы решить эту проблему? – MSU

+0

Что вы хотите, чтобы закрыть сообщение, код, который вы написали в вопросе – Dotnet

0

Я этот код закрывает форму на панели, но не работает.

private void button12_Click(object sender, EventArgs e) 
    { 
     dontShowPANEL(); 
     //ActiveForm.Close(); 
     MainImaginCp kj = new MainImaginCp(); 
     //kj.Visible = false; 
     kj.panel2.Controls.Clear(); 
     panel1.Visible = true; 
     EngABCLearning usr1 = new EngABCLearning(); 
     usr1.Show(); 
     kj.panel2.Controls.Add(usr1); 
     //kj.Focus(); 
    } 

И я использовал следующий код, чтобы показать форму на панели.

private void toolStripMenuItem1_LR_ENG_Click(object sender, EventArgs e) 
    { 
     //kids.Form2 hj = new kids.Form2(); 
     //hj.Show(); 


     EngABCLearning gh = new EngABCLearning(); 
     //gh.Show(); 
     gh.TopLevel = false; 
     gh.FormBorderStyle = FormBorderStyle.None; 
     //Panel2.Controls.Add(subForm, 0, 1); 
     panel2.Controls.Add(gh); 
     gh.Visible = true; 
    } 

Это закрытие моей основной формы и выход из приложения.

0

попробовать это я загрузил две формы внутри одной панели

private void Form1_Load(object sender, EventArgs e) 
    { 
     Form2 f1 = new Form2(); 
     f1.TopLevel = false; 
     f1.AutoScroll = true; 
     panel1.Controls.Add(f1); 
     f1.Dock = DockStyle.Left; 
     f1.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     f1.Show(); 
     //form2 
     Form3 f2 = new Form3(); 
     f2.TopLevel = false; 
     f2.AutoScroll = true; 
     panel1.Controls.Add(f2); 
     f2.Dock = DockStyle.Left; 
     f2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     f2.Show(); 



    } 
Смежные вопросы