【问题标题】:What's the best method to switch between forms in C#?在 C# 中切换表单的最佳方法是什么?
【发布时间】:2009-04-12 12:26:29
【问题描述】:

在 C# 中切换表单的最佳方法是什么?

场景:我想单击 Form1 中的按钮,杀死现有的 Form1 并创建 Form2。 我怎样才能做到这一点?

如果有人可以比较 Winforms 与 WPF 中此任务的复杂性,我将不胜感激。

【问题讨论】:

    标签: c# wpf winforms


    【解决方案1】:

    最简单的方法是使用一个控制函数来打开这两个表单。在第一个表单上单击按钮时,将其关闭并移至第二个表单。

    using (var form1 = new Form1() ) {
      form1.ShowDialog();
    }
    using (var form2 = new Form2()) {
      form2.ShowDialog();
    }
    

    WPF 的代码类似。最大的区别是 WPF 窗口(以及几乎所有的类通常)不实现 IDisposable,因此不需要 using 语句。

    var win1 = new Window1();
    win1.ShowDialog();
    var win2 = new Window2();
    win2.ShowDialog();
    

    【讨论】:

    • 是的,这是一个解决方案。如果我需要 100 个或更多窗口会怎样?我无法创建所有它们并将它们保存在内存中,并在我需要它们时使它们可见。
    【解决方案2】:

    当然,关闭当前表单、创建新表单的实例并显示它只是一件非常简单的事情吗?以下代码(在您的情况下位于 Click 事件处理程序下)应该在 WinForms 或 WPF 中工作。

    this.Close();
    (new Form2()).Show();
    

    我可能在这里遗漏了什么吗?

    【讨论】:

    • 你会在哪里找到 "(new Form2()).Show()" ?你不会得到那个代码,因为你的 Form1 对象已经被销毁了
    • 这两行属于按钮的单击事件处理程序。仅仅因为第一行关闭了当前表单,它不会突然停止执行代码!试试看,如果您遇到问题,请告诉我们。
    • this.Close(); (新的 Form2()).Show();这在按钮点击不起作用。它会在您进入表单 2 之前终止您的窗口
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-20
    • 2013-02-15
    • 1970-01-01
    • 2021-12-23
    • 2015-11-07
    • 1970-01-01
    • 2011-11-04
    相关资源
    最近更新 更多