Добавление C# формы в другую форму - PullRequest
0 голосов
/ 09 февраля 2020

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

public void btn_add_Click(object sender, EventArgs e)
{
    Admin_Dashboard frm = new Admin_Dashboard();

    Brand.Add_Brand myform = new Brand.Add_Brand();

    myform.FormBorderStyle = FormBorderStyle.None;
    myform.TopLevel = false;
    myform.AutoScroll = true;
    frm.content.Controls.Clear();
    frm.content.Controls.Add(myform);

    myform.Show();
}

Ответы [ 3 ]

0 голосов
/ 09 февраля 2020

Я не уверен, что такое frm.content.Controls, но это работает ...

using System;
using System.Windows.Forms;

namespace WindowsFormsApp1
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

    class Form1 : Form
    {
        private Panel panel1;
        private Button button1;

        public Form1()
        {
            this.panel1 = new Panel();
            this.button1 = new Button();

            this.SuspendLayout();

            this.panel1.Location = new System.Drawing.Point(305, 51);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(457, 338);
            this.panel1.TabIndex = 0;

            this.button1.Location = new System.Drawing.Point(321, 9);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 1;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;
            this.button1.Click += new System.EventHandler(this.button1_Click);

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.button1);
            this.Controls.Add(this.panel1);
            this.Name = "Form1";
            this.Text = "Form1";

            this.ResumeLayout(false);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 form2 = new Form2();

            form2.FormBorderStyle = FormBorderStyle.None;
            form2.TopLevel = false;
            form2.AutoScroll = true;

            panel1.Controls.Clear();
            panel1.Controls.Add(form2);

            form2.Show();
        }
    }

    class Form2 : Form
    {
        private Button button1;

        public Form2()
        {
            this.button1 = new Button();

            this.SuspendLayout();

            this.button1.Location = new System.Drawing.Point(321, 9);
            this.button1.Name = "button1";
            this.button1.Size = new System.Drawing.Size(75, 23);
            this.button1.TabIndex = 1;
            this.button1.Text = "button1";
            this.button1.UseVisualStyleBackColor = true;

            this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
            this.AutoScaleMode = AutoScaleMode.Font;
            this.BackColor = System.Drawing.Color.Yellow;
            this.ClientSize = new System.Drawing.Size(800, 450);
            this.Controls.Add(this.button1);
            this.Name = "Form2";
            this.Text = "Form2";

            this.ResumeLayout(false);

        }
    }
}

Я что-то упустил?

0 голосов
/ 10 февраля 2020

Чтобы отобразить форму на панели, возможно, вы можете попытаться установить текущую форму как IsMdiContainer. После этого вы можете добавить форму на указанную панель.

private void btAdd_Click(object sender, EventArgs e)
{
    SubForm sub = new SubForm();
    this.IsMdiContainer = true;
    sub.TopLevel = false;
    panel1.Controls.Add(sub);
    sub.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
    sub.Dock = DockStyle.Fill;
    sub.Show();
}

Надеюсь, это поможет вы.

0 голосов
/ 09 февраля 2020

Вот что вы делаете:

  1. Создайте пользовательский элемент управления, в котором есть все, что имеет форма.
  2. Измените форму, чтобы она имела только пользовательский элемент управления.
  3. На панели, где вы хотите форму ... вы помещаете пользовательский элемент управления.

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

...