Как использовать несколько форм на одной панели Csharp на одной панели форм Windows? - PullRequest
5 голосов
/ 08 апреля 2011

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

Ответы [ 5 ]

7 голосов
/ 08 апреля 2011

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

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

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

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

        ContainerPanel.Controls.Remove(activeform);
        activeform.Close();
        activeform.Dispose();
5 голосов
/ 08 апреля 2011

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

Пример, если вы хотите показать 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 голосов
/ 11 ноября 2013

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

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



    }
0 голосов
/ 10 апреля 2011

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

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 голосов
/ 08 апреля 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...