Вызовите дочерние методы mdi из parent - PullRequest
1 голос
/ 15 марта 2012

У меня есть кнопка сохранения в родительской форме MDI, и я хочу вызывать какой-либо метод в активной дочерней форме MDI каждый раз, когда пользователь нажимает эту кнопку.

Предположим, у меня есть activemdichild.name, хранящееся в переменной.

string name = this.ActiveMdiChild.Name.ToString();

И все мои дочерние MDI-формы имеют метод сохранения.

public void SaveForm()
{
//Some code here
}

Как программно вызвать метод SaveForm?

Если это не лучшие практикичто вы предлагаете?

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Как насчет того, чтобы ваши дочерние формы реализовали интерфейс, определяющий, что вы ожидаете от своих детей mdi.

Например:

IChildWindow
{
  void Save()
}

public class MyChildClass : IChildWindow
{
  public void Save()
  {
  }
}

Затем в родительской форме mdi:

foreach (var child in MdiChildren)
{
  var childAsIWindow = child as IChildWindow;
  if (childAsIWindow == null) throw new InvalidOperationException("Not a IChildWindow");
  // or you could just ignore them.

 childAsIWindow.Save();
}
2 голосов
/ 15 марта 2012

При условии, что тип дочерней формы MDI равен MyMdiForm, вы можете сделать следующее

foreach (var form in MdiChildren) {
  var view = form as IEmpresas;
  if (view != null) {
    view.SaveForm();
  }
}
...