#c# #mdichild #mdiparent
#c# #mdichild #mdiparent
Вопрос:
Как проверить событие закрытия дочерней формы MDI при нажатии кнопки «X» и сообщить родительской форме, что она закрыта?
Ответ №1:
Вы можете просто прослушать событие FormClosed в MDI.
var childForm = new ChildForm();
childForm.FormClosed = new FormClosedEventHandler(form_FormClosed);
childForm.Show();
Ответ №2:
В форме FormClosing event вы можете сделать
TheMainForm form = (TheMainForm)this.MdiParent()
form.AlertMe( this );
Комментарии:
1. Нет . Метод AlertMe() в C #, что я не могу найти метод MdiParent, только свойство.
2. Вы бы создали свои собственные, сделали их общедоступными
Ответ №3:
Прикрепите закрытое событие к дочерней форме из основной формы
Form mdiChild = new Form();
mdiChild.MdiParent = this;
mdiChild.Closed = (s, e) => { //... };
mdiChild.Show();
не проверял код, но это не должно быть так сложно
Ответ №4:
что ж, приведенный ниже код показывает, как родительская форма распознает, была ли дочерняя форма закрыта или нет, и она также может распознать, добавлена ли какая-либо новая дочерняя форма к этой родительской форме..
private List<Form> ChildFormList = new List<Form>();
private void MyForm_MdiChildActivate(object sender, EventArgs e)
{
Form f = this.ActiveMdiChild;
if (f == null)
{
//the last child form was just closed
return;
}
if (!ChildFormList.Contains(f))
{
//a new child form was created
ChildFormList.Add(f);
f.FormClosed = new FormClosedEventHandler(ChildFormClosed); // here the parent form knows that that child form has been closed or not
}
else
{
//activated existing form
}
}
private void ChildFormClosed(object sender, FormClosedEventArgs e)
{
//a child form was closed
Form f = (Form)sender;
ChildFormList.Remove(f);
}