Mdi Дети изменились в .Net - PullRequest
       17

Mdi Дети изменились в .Net

0 голосов
/ 15 апреля 2010

Существует ли простой способ отслеживания изменений дочерних элементов Mdi, то есть когда они создаются и закрываются, что-то вроде события OnMdiChildListChanged (я понимаю, что на самом деле этого не существует).

Мне также известно, что в моем Mdi может быть метод, который обрабатывает создание дочерних форм и регистрирует их состояние или даже создает интерфейс, который определяет, что у дочерней формы есть метод "NotifyParent", который затем вызывается при закрытии формы, но мне было интересно, есть ли какие-нибудь встроенные события, в которые я мог бы погрузиться?

Ответы [ 3 ]

1 голос
/ 15 апреля 2010

Эта сантехника уже существует, она используется для автоматического обновления списка окон MDI (свойство MenuStrip.MdiWindowListItem). Класс Form содержит код в методах OnVisibleChanged и OnMdiChildActivate для обновления меню. Но я надеюсь, что вы не увидите изменений в списке пунктов меню и не сможете переопределить ни один из этих кодов. Не без того, чтобы делать подобные и перегружать эти методы в ваших собственных дочерних формах.

Избавьтесь от этой проблемы, просто напишите в родительской форме MDI открытый метод, который вы последовательно используете для добавления новых дочерних окон:

public void AddChild(Form child) {
  child.MdiParent = this;
  child.FormClosed += child_FormClosed;
  // Run your code to handle new child windows here...
}
private void child_FormClosed(object sender, FormClosedEventArgs e) {
  // Your code to handle closed child windows here...
}

Вы даже можете сделать AddChild статическим, поскольку существует только один родительский элемент MDI.

0 голосов
/ 15 апреля 2010

MdiChildActivate (или OnMdiChildActivate) будет срабатывать при открытии или закрытии дочернего элемента Mdi.

0 голосов
/ 15 апреля 2010

Вы можете создать свое собственное событие и запустить его в связанных методах самостоятельно. Это довольно просто, и вы можете подписаться на него, как встроенное событие.

...