如何处理多个页面或表单
Posted
技术标签:
【中文标题】如何处理多个页面或表单【英文标题】:How to work with multiple pages or forms 【发布时间】:2011-11-19 16:50:09 【问题描述】:我正在尝试创建一个窗口,在该窗口上我会有一个带有不同按钮的工具栏。
当我点击其中一个按钮时,它会显示一些关于某人的信息,或者当我点击另一个按钮时,它会显示一些关于员工的其他信息。
我该怎么做。我可以添加页面,然后在该按钮需要它时将该页面插入到网格或面板中吗?
或者我是否应该只制作多个面板并将它们全部创建在一个窗口上(但如果我这样做,当它们彼此堆叠在一个窗口中时,我如何轻松编辑每个面板)。我希望我很清楚这一点,Idk 怎么问这个问题。任何帮助表示赞赏。
另外,我如何停靠某些东西,以便在最大化或最小化时调整自身大小?
【问题讨论】:
【参考方案1】:一种方法是创建另一个表单并通过按钮事件打开它:
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();
【讨论】:
是的,这可以工作,但我不想弹出一个新窗口。我试图将所有内容都保存在一个窗口中。几乎像 tabControl,但创建了我自己的带有工具栏的标签系统。 用户控件是您放在一起的控件的集合,并且可以像任何其他标准控件一样在任何地方重复使用。您当然可以使用面板并以相同的方式处理它们(在第二个示例中,将 UserControl 替换为 Panel)。将其全部放在 userControl 中更易于管理,因为您不必在主窗体中声明每个面板及其组件。【参考方案2】:为您拥有的每个按钮创建一个面板。那么:
panelx.Dock = DockStyle.Fill; //this will fill the window.
然后将您想要为该按钮显示的所有内容放在该面板上。
当你想显示时,说 panel2 而不是 panel1:
panel1.Hide();
panel2.Show();
【讨论】:
【参考方案3】:如前所述,这可以使用选项卡控件来实现。
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();
【讨论】:
【参考方案4】:我不久前在 Windows 窗体中实现了一个“分页选项”对话框。我关于它的博文在这里:http://www.differentpla.net/content/2004/10/implementing-a-paged-options-dialog(不过图片不见了)。
【讨论】:
如果我在我的项目中添加一个页面,然后将数据网格和列表视图之类的信息放在那里等等..当我点击一个按钮或更好时,如何在主窗口中显示该页面你没有告诉我怎么做,但是否可以做到以上是关于如何处理多个页面或表单的主要内容,如果未能解决你的问题,请参考以下文章