Мне нужно закрыть предыдущее активное окно при навигации по форме окна с помощью 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());
}
Не проверено, должно быть близко.