Form 2上的C#结束进程关闭

时间:2015-07-05 09:43:20

标签: c# multiple-forms

我尝试使用多种形式,我想要的是改变形式依赖于组合框的选定索引的方式,我能想到的唯一方法是隐藏form1并显示form2,但是问题是当你关闭form2时,进程没有结束......我尝试了下面的代码

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

如果没有,表格是否可以改变组合框选择的索引?

4 个答案:

答案 0 :(得分:1)

尝试Application.Exit();

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

答案 1 :(得分:1)

只需将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上调用一次。所以你真的不需要关闭事件处理程序。

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

Form2 HeadquarterForm = new Form2(this);