Возврат результатов работы формы
Всё вроде бы просто, в форме источнике объявляем public метод (ну например int Result), который возвращает необходимые нам результаты.
И алгоритм очень прост:
Form1 form = new Form1();
form.showdialog();
int i = form.Result();
Все работало прекрасно, но появилось приложение переделать. Появилась фрма контейнер которая связывет все формы под одной "крышей". И тут метод дал сбой form.showdialog(); не работает при использовании Mdi.
Соответсвенно вышеуказанный метод Result возвращает инициализированное значение переменной.
Кто-нибудь подскажет решение?
на событие закрытия формы-источника навешивается обработчик
autor.Closed += new EventHandler(OnFormClosed);
который и будет возвращать необходимые нам данные через public метод.
В обработчике пишем что нужно
void OnFormClosed(object sender, EventArgs e)
{
Autor autor = (Autor)sender;
int i = autor.User())
}
Вопросы однако остались - каким образом добиться при использовании MDI контейнера того же эффекта что и при использовании ShowDialog(); То есть чтобы активна была только одна форма, а остальные были недоступны для пользователя до того момента пока эта форма не будет закрыта?
на событие закрытия формы-источника навешивается обработчик
autor.Closed += new EventHandler(OnFormClosed);
который и будет возвращать необходимые нам данные через public метод.
В обработчике пишем что нужно
void OnFormClosed(object sender, EventArgs e)
{
Autor autor = (Autor)sender;
int i = autor.User())
}
Вопросы однако остались - каким образом добиться при использовании MDI контейнера того же эффекта что и при использовании ShowDialog(); То есть чтобы активна была только одна форма, а остальные были недоступны для пользователя до того момента пока эта форма не будет закрыта?[/quote]
А кто мешает для показа Child-формы вызывать ShowDialog()?? Или создай в классе родительской формы ссылку на активную дочернюю форму, затем создай обработчик для всех дочерних форм на событие Deactivate, в котором запрещаешь активацию ненужной формы.