[英]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.