繁体   English   中英

Form2上的C#结束过程关闭

[英]C# Ending process on Form2 close

我正在尝试使用多个表单,我想要的是更改表单的方式取决于组合框的选定索引,我唯一想到的方法是隐藏form1和show form2,但是问题是当您关闭时form2,该过程没有结束...我尝试了下面的代码

private void Form2_FormClosing(object sender, FormClosedEventArgs e)
    {
        foreach (var process in Process.GetProcessesByName("Process Name.exe"))
        {
            process.Kill();
        }
    }

如果没有,是否可以在组合框所选索引上更改表格?

尝试Application.Exit();

它退出整个应用程序并关闭所有表单和线程。

只需将Form1的实例传递给Form2的构造函数,并在form1成员中保留对其的引用

public class Form2 : Form{
    private Form _form1;

    public Form2(Form form1):this()
    {
        _form1 = form1;
        InitializeComponent();
    }
}

以后您可以简单地使用该引用:

_form1.Close();

这是一种更清洁的方法。 其他机制也可以,例如在form1上为form2中的事件实现事件处理程序。

根据您的pastebin代码更改以下内容:

Form2 HeadquarterForm = new Form2(this);

您还只需要关闭的事件处理程序,并仅在_form1上调用一次close。 因此,您实际上不需要关闭事件处理程序。

该进程仍在运行,因为form1仍处于活动状态但已隐藏。

尝试使用Environmental.exit()终止进程

在pastebin中查看您的代码。 问题是,创建Form2时,您没有在其Form2的构造函数中传递Form1。 将开关盒(4)的部分更改为:

Form2 HeadquarterForm = new Form2(this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM