Как работать с несколькими страницами или формами - PullRequest
3 голосов
/ 18 сентября 2011

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

Когда я нажимаю одну из кнопок, она отображает что-то вроде информации о человеке иликогда я нажимаю на другую кнопку, отображается другая информация о сотрудниках.

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

Или я должен просто сделать несколько панелей и создать их все в одном окне (но если я сделаю это, то мне будет легко редактировать каждую из этих панелей, когда они наложены друг на друга, все в одном окне).Я надеюсь, что я проясняю это, ИДК, как еще задать этот вопрос.Любая помощь приветствуется.

Кроме того, как мне закрепить что-либо, чтобы оно изменило размеры при максимизации или минимизации?

Ответы [ 4 ]

3 голосов
/ 18 сентября 2011

Один из способов - создать другую форму и открыть ее из события кнопки:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

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

Если вам нужно все в одном окне, вы можете создать пользовательский элемент управления и добавить его в первое окно:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        UserControl1 control = new UserControl1();
        control.Dock = DockStyle.Fill;
        this.Controls.Add(control);
    }
}

Другой вариант - использование дочерних форм:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        this.IsMdiContainer = true;
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Form2 form2 = new Form2();
        form2.MdiParent = this;
        form2.Show();
    }
}
1 голос
/ 10 июля 2018

Как упоминалось ранее, это может быть достигнуто с помощью вкладки.

      public ParentForm()
    {
        TabControl tabcontrol1 = new TabControl();
        tabcontrol1.Dock = DockStyle.Top;
        TabPage tab1 = new TabPage("Form1 Name");
        Form1 frm1 = new Form1();
        frm1.TopLevel = false;
        frm1.Parent = tab1;
        frm1.Visible = true;
        tabcontrol1.TabPages.Add(tab1);

        Form2 frm2 = new Form2();
        TabPage tab2 = new TabPage("Form2 Name");
        frm2.TopLevel = false;
        frm2.Parent = discotab;
        frm2.Visible = true;
        tabcontrol1.TabPages.Add(discotab);
    }

Использование «сложенных» пользовательских элементов управления

    public ParentForm()
    {
        InitializeComponent();
        MyUserControl1 control1 = new MyUserControl1();
        control1.Dock = DockStyle.Bottom;
        control1.BringToFront();
    }
    private void button1_Click(object sender, EventArgs e)
    {
        MyUserControl2 control2 = new MyUserControl2();
        control2.Dock = DockStyle.Bottom;
        control2.BringToFront();
    }
1 голос
/ 18 сентября 2011

Создайте панель для каждой кнопки, которая у вас есть. Тогда:

panelx.Dock = DockStyle.Fill; //this will fill the window.

И поместите все, что вы хотите показать для этой кнопки на этой панели.

Когда вы хотите показать, скажем панель2 вместо панели1:

panel1.Hide();
panel2.Show();
0 голосов
/ 18 сентября 2011

Я реализовал диалоговое окно «Параметры постраничной подкачки» в Windows Forms некоторое время назад. Мой пост в блоге об этом здесь: http://www.differentpla.net/content/2004/10/implementing-a-paged-options-dialog (хотя изображения отсутствуют).

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