如何在表单之间导航

我是一个新兴的c#和窗口forms我正在做一个项目,我遇到了一些问题

  1. 如何在窗口中导航窗体(我有一个菜单条,点击它会显示一个项目“品牌”,所以当我点击它,它应该在窗口内打开,我不想要使用mdiparent /容器,我有form1和form2,然后我把菜单条放在form1中,form1中有一些东西,如果使用mdiparent / container,form1 content / thing将阻止form2)

2.i使用下面的代码,问题是我想关闭form1,我点击菜单条中的“品牌”…但如何???

public partial class Form1 : Form { // i put the menu strip in form1 design public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void Check_Click(object sender, EventArgs e) { Form2 Check = new Form2(); Check.Show(); } } 

您不能只关闭Form1因为它是主窗体,但您可以隐藏它。 使用this.Hide()

 private void Check_Click(object sender, EventArgs e) { Form2 Check= new Form2(); Check.Show(); Hide(); } 

[编辑]

不确定这是不是问了什么。 但…

有许多方法可以在表单之间实现导航,例如:

Form1

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

Form2

 private void button1_Click(object sender, EventArgs e) { var form1 = (Form1)Tag; form1.Show(); Close(); } 

我认为你应该创建用户控件而不是不同的forms。 然后,您可以根据菜单中的选择在主面板中添加用户控件。

最初类似于下面的内容

 this.panel.Controls.Clear(); this.panel.Controls.Add(new UserControl_For_Form1()); 

用户点击菜单中的其他选项后。

 this.panel.Controls.Clear(); this.panel.Controls.Add(new UserControl_For_Form2()); 

如果你真的想要使用你目前使用的方式。 下面的代码将有所帮助

为Form2添加Form1属性,并使用其构造函数将form1实例解析为Form2。

 public partial class Form2 : Form { private Form1 form1; public Form2(Form1 myForm) { InitializeComponent(); form1 = myForm; } } 

显示form2并隐藏form1。

 private void Check_Click(object sender, EventArgs e) { Form2 Check= new Form2(this); Check.Show(); Hide(); } 

现在,在form2结束事件中,您可以显示form2中的form1实例并关闭form2。

使用MDI表格是另一种选择。

问这个问题已经有7年了,但是如果有人还在寻找解决方案,我想给出答案。 如果您使用的是DevExpress,则可以将导航框架添加到您的程序中。 您可以在不同的组件之间切换,例如GridControl,GroupBox等。 所以你不必创建一个额外的表单,以便在表单之间导航。