如何使用多个页面或表单

时间:2011-09-18 14:34:55

标签: c# windows winforms visual-studio-2010

我正在尝试创建一个窗口,在该窗口中我将有一个带有不同按钮的工具栏。

当我点击其中一个按钮时,它会显示类似于某个人的信息,或者当我点击另一个按钮时它会显示有关员工的其他信息。

我该怎么做?我可以创建添加页面,然后在该按钮调用时将该页面插入网格或面板吗?

或者我应该制作多个面板并在一个窗口上创建所有面板(但是如果我这样做,当我们在一个窗口中将它们堆叠在一起时,如何编辑每个面板是很容易的)。我希望我能清楚这一点,Idk怎么回答这个问题。任何帮助表示赞赏。

另外,我如何停靠某些东西,以便在最大化或最小化时自行调整大小?

4 个答案:

答案 0 :(得分:3)

一种方法是创建另一个表单并从按钮事件中打开它:

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 :(得分:1)

为您拥有的每个按钮创建一个面板。然后:

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

并在该面板上显示您想要显示的所有按钮。

当您想要显示时,请说出panel2而不是panel1:

panel1.Hide();
panel2.Show();

答案 2 :(得分:1)

如前所述,这可以使用选项卡控件来实现。

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

答案 3 :(得分:0)

我刚才在Windows窗体中实现了“分页选项”对话框。我的博客文章在这里:http://www.differentpla.net/content/2004/10/implementing-a-paged-options-dialog(图片丢失了。)