多个表单-C#在Form2上结束进程关闭

本文关键字:结束 进程 Form2 表单 -C# | 更新日期: 2023-09-27 18:01:09

我正在尝试处理多个表单,我想要的是根据组合框的选定索引更改表单的方式,我唯一能想到的方法是隐藏表单1和显示表单2,但问题是当你关闭表单2时,过程不会结束。。。我试过下面的代码

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

如果没有,有没有一种方法可以在所选索引的组合框上更改表单?

多个表单-C#在Form2上结束进程关闭

尝试Application.Exit();

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

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

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

稍后您可以简单地使用该参考:

_form1.Close();

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

基于您的粘贴代码更改此:

Form2 HeadquarterForm = new Form2(this);

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

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

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

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

Form2 HeadquarterForm = new Form2(this);