我尝试使用多种形式,我想要的是改变形式依赖于组合框的选定索引的方式,我能想到的唯一方法是隐藏form1并显示form2,但是问题是当你关闭form2时,进程没有结束......我尝试了下面的代码
private void Form2_FormClosing(object sender, FormClosedEventArgs e)
{
foreach (var process in Process.GetProcessesByName("Process Name.exe"))
{
process.Kill();
}
}
如果没有,表格是否可以改变组合框选择的索引?
答案 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);