Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Возврат результатов работы формы

20K
16 августа 2006 года
alreves
2 / / 14.08.2006
При работе приложения существует необходимость передавать данные о результате работы одной формы (форма-источник) в другую форму (форма-приёмник).
Всё вроде бы просто, в форме источнике объявляем public метод (ну например int Result), который возвращает необходимые нам результаты.
И алгоритм очень прост:
Form1 form = new Form1();
form.showdialog();
int i = form.Result();

Все работало прекрасно, но появилось приложение переделать. Появилась фрма контейнер которая связывет все формы под одной "крышей". И тут метод дал сбой form.showdialog(); не работает при использовании Mdi.
Соответсвенно вышеуказанный метод Result возвращает инициализированное значение переменной.

Кто-нибудь подскажет решение?
20K
16 августа 2006 года
alreves
2 / / 14.08.2006
С предыдущей проблемой я кажется разобрался. Решение такое:
на событие закрытия формы-источника навешивается обработчик

autor.Closed += new EventHandler(OnFormClosed);

который и будет возвращать необходимые нам данные через public метод.
В обработчике пишем что нужно

void OnFormClosed(object sender, EventArgs e)
{
Autor autor = (Autor)sender;
int i = autor.User())
}

Вопросы однако остались - каким образом добиться при использовании MDI контейнера того же эффекта что и при использовании ShowDialog(); То есть чтобы активна была только одна форма, а остальные были недоступны для пользователя до того момента пока эта форма не будет закрыта?
273
20 августа 2006 года
3A3-968M
1.2K / / 22.12.2005
[quote=alreves]С предыдущей проблемой я кажется разобрался. Решение такое:
на событие закрытия формы-источника навешивается обработчик

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, в котором запрещаешь активацию ненужной формы.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог