C# Завершающий процесс в Form2 close

Я пытаюсь работать с несколькими формами, мне нужно изменить способ, которым форма зависит от выбранного индекса в выпадающем списке, единственный способ, о котором я мог подумать, это скрыть form1 и показать form2, но проблема в том, когда вы закрываете form2, процесс не заканчивается... Я попробовал код ниже

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

если нет, то есть ли способ изменить форму в выбранном индексе списка?

4 ответа

Просто передайте экземпляр 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);

вам также нужен только закрытый обработчик событий и вызовите close для _form1 только один раз. Так что вам не нужен обработчик события закрытия.

Пытаться Application.Exit();

Он выходит из всего приложения и закрывает все ваши формы и потоки.

Процесс все еще выполняется, потому что form1 все еще жив, но скрыт.

Попробуйте использовать Environmental.exit(), чтобы убить процесс

Глядя на ваш код в pastebin. Проблема в том, что вы не передаете Form1 в конструктор вашей Form2 при ее создании. Измените часть вашего распределительного шкафа (4) на:

Form2 HeadquarterForm = new Form2(this);
Другие вопросы по тегам