c# - 如何在关闭父表单之前加载子表单而不关闭它们

标签 c# visual-studio

我正在将 Visual Studio 2017 用于某个项目

如何在关闭父窗体之前加载子窗体而不同时关闭它们

这样做只是关闭应用程序而不加载下一个表单:

private void button_Click(object sender, EventArgs e) {
    Form2 f2 = new Form2();
    f2.Show();
    this.Close();
}

编辑:问题改写

最佳答案

由于 Programm.cs 中的 Application.Run(new Form1()),应用程序已关闭。

这是 winforms 应用程序的默认模板,假设您仅使用一个(主)表单,关闭该表单将终止应用程序。

我假设您只是将表单称为父/子表单,但它们不是 MDI,也没有设置 Owner属性(property)。相反,有两种形式,其中第二个有条件地显示(当单击右键时)。此条件可以通过 DialogResult 传递。

将您的 Main 方法更改为:

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    // Application.Run(new Form1()); - don't use this anymore

    var form1 = new Form1();
    if(form1.ShowDialog() == DialogResult.XXX)
        (new Form2()).ShowDialog();
}

按钮点击事件:

void button_Click(object sender, EventArgs e) => DialogResult.XXX;

这将关闭表单并返回指定的值。

你必须choose return value你自己,如果没有其他OK就可以了。

关于c# - 如何在关闭父表单之前加载子表单而不关闭它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55473298/

相关文章:

c# - wpf 中调度程序计时器的性能

c# - 是否建议模拟具体类(class)?

c# - 全新的 Xamarin.Forms 项目 : The file "obj\Debug\android\bin\packaged_resources" does not exist

.net - Visual Studio 立即窗口 .load sos.dll 不起作用

visual-studio - 在Visual Studio中停止鼠标选择

c# - C# 中的 const 和 readonly 有什么区别?

c# - 我可以在 C# 中创建一个全局异常处理程序,让代码在之后继续运行吗?

visual-studio - 如何在使用 GIT 和 WebDeploy 发布时隐藏 web.config appsetting 参数

c++ - 了解基本代码分析

c# - 如何获取 ENVDTE CodeInterface 的通用类型参数?