我有两种表单Form1
和Form2
,而Form1
我写了以下代码:
#include "Form2"
//
//
Form2^ obj = gcnew Form2();
obj->Show();
this->Hide();
//
//
问题是当我通过X按钮关闭Form2
的屏幕时,应用程序仍然存在于内存中,因为基本格式Form1
仅被隐藏但未关闭。我该怎么办?
答案 0 :(得分:0)
您必须在退出时关闭下层表格。
尝试覆盖OnClosing
中的Form2
方法并强制From1
以Close
方式关闭..
答案 1 :(得分:0)
我根据HansPassant评论解决了这个问题。首先,需要将Form2_FormClosed声明为事件处理程序,如:
this->FormClosed += gcnew FormClosedEventHandler(this, &Form2::Form2_FormClosed);
然后使用它:
private: System::Void Form2_FormClosed(){
Application::Exit();
}
答案 2 :(得分:-1)
是的,因为你的父母或第一个表单仍然是Open,你只需要隐藏,你应该使用obj.ShowDialog()函数,它将打开第二个表单作为弹出窗口,第一个表单将无法访问...直到第二个表格被关闭......
另一种方法是使用System.Diagnotics命名空间并使用进程类,获取应用程序的所有实例,然后以编程方式结束进程... 像这样... 使用System.Diagnostics;
private Process GetaProcess(string processname)
{
Process[] aProc = Process.GetProcessesByName(processname);
if (aProc.Length > 0)
return aProc[0];
else return null;
}
Process myprc = Call GetaProcess("Your_app_process_name.exe"); myprc.Kill();