Мне нужно закрыть предыдущее активное окно при навигации по форме окна с помощью Menustrip

Я собираю простой пользовательский интерфейс, который взаимодействует с базой данных SQL. Моя проблема - это проблема пользовательского интерфейса, каждый раз, когда выбирается элемент меню, он открывает новое активное окно. Как мне установить это, чтобы закрыть предыдущее активное окно? Я пытался использовать Form.Close();, но это просто закрывает все.

private void addCampusToolStripMenuItem_Click(object sender, EventArgs e)
{
    if_add_campus go = new if_add_campus();
    go.Show();
}

private void addDepartmentToolStripMenuItem_Click(object sender, EventArgs e)
{
    if_add_dept go = new if_add_dept();
    go.Show();
}

private void addEmployeToolStripMenuItem_Click(object sender, EventArgs e)
{
    if_add_employee go = new if_add_employee();
    go.Show();
}

1 ответ

Решение

Просто следите за последней формой, которую вы создали в переменной:

    private Form lastForm;

    private void showForm(Form frm) {
        frm.FormClosed += (sender, ea) => {
            if (object.ReferenceEquals(lastForm, sender)) lastForm = null;
        };
        frm.Show();
        if (lastForm != null) lastForm.Close();
        lastForm = frm;
    }

И используйте showForm() для отображения ваших форм:

private void addCampusToolStripMenuItem_Click(object sender, EventArgs e)
{
    showForm(new if_add_campus());
}

Не проверено, должно быть близко.

Другие вопросы по тегам