C#如何从一个窗口返回,其中两种不同的窗口形式导致

C#如何从一个窗口返回,其中两种不同的窗口形式导致,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我希望标题不是很混乱。我会尽力解释的。 我正在visual studio中用c#构建一个虚拟博物馆。在form1中,用户可以选择是继续取消注册(导致form2),还是继续作为注册用户(导致form3)。对于已注册和未注册的用户,有些选项相同,有些则不同。让我们假设在form2和form3中,我都有一个链接标签,该标签指向带有代码的form4 this.close(); Form4 myForm4 = new Form4; myForm4.ShowDialog(); 到目前为止还不错。在form

我希望标题不是很混乱。我会尽力解释的。 我正在visual studio中用c#构建一个虚拟博物馆。在form1中,用户可以选择是继续取消注册(导致form2),还是继续作为注册用户(导致form3)。对于已注册和未注册的用户,有些选项相同,有些则不同。让我们假设在form2和form3中,我都有一个链接标签,该标签指向带有代码的form4

this.close();
Form4 myForm4 = new Form4;
myForm4.ShowDialog();
到目前为止还不错。在form4中,我放置了一个“previous”按钮。 我怎样才能回到导致我进入表格4的表格? 如果我单击form3中的链接标签并按下“上一步”按钮,我想转到form3,如果我单击form2,我想返回form2。 一种解决方案是创建类似的表单,然后毫无问题地返回。但我有6个相同的选项,这意味着12个新表格。
有人能帮我怎么做吗

只是不要关闭表单;把它藏起来。执行将在ShowDialog()之后返回,您可以在此处再次取消隐藏它:

this.Hide();
Form4 myForm4 = new Form4;
myForm4.ShowDialog();
this.Show();
实际上,您可以捕获ShowDialog()的结果,除了取消隐藏表单之外,还可以执行其他操作


一种更稳健的方法是使用one表单,并通过使用UserControls或无边框表单来更改当前在表单中显示的内容。然后你可以有一个列表来跟踪顺序,并允许轻松遍历后退/前进按钮。

为每个表单创建上一个和下一个属性,以记住要导航到哪些表单。我建议你重新评估整个方法。也许可以为注册用户和未注册用户使用一个表单,只禁用/隐藏未注册用户不可用的功能?。。。像一个TabControl