приложение все еще существует в памяти, хотя оно закрыто - PullRequest
1 голос
/ 21 февраля 2012

У меня есть две формы Form1 и Form2, а в Form1 я написал следующий код:

#include "Form2"
//
//
Form2^ obj = gcnew Form2();
obj->Show();
this->Hide();
//
//

Проблема в том, что я закрываю экран Form2 кнопкой Xприложение все еще существует в памяти, поскольку базовая форма Form1 скрыта, но не закрыта.Что я могу сделать?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2012

Да, это потому, что ваш родитель или первая форма все еще открыты, вы просто должны скрыть это, вы должны использовать функцию obj.ShowDialog (), она откроет 2-ю форму, так как всплывающее окно и 1-я форма не будет доступна ... пока не будет закрыта 2-я форма ...

Еще один способ сделать это - использовать пространство имен 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();
0 голосов
/ 25 февраля 2012

Я решил это, основываясь на комментарии HansPassant. Во-первых, нужно объявить Form2_FormClosed в качестве обработчика событий, например:

this->FormClosed += gcnew FormClosedEventHandler(this, &Form2::Form2_FormClosed);

затем используйте его как:

private: System::Void Form2_FormClosed(){ 
Application::Exit(); 
}
0 голосов
/ 21 февраля 2012

Вы должны закрыть основную форму при выходе.

Попробуйте переписать метод OnClosing в Form2 и принудительно закрыть From1, используя метод Close.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...