| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Сослаться на MdiParent |
| Автор: ДобренькийПапаша 25.11.2009, 17:41 | ||
Пользователь кликает по пункту меню в MdiContainer (MainForm), и запускает модальное окно, в нём что-то делает и тыкает ОК, теперь надо запустить немодальное окно, и присвоить ему MdiParent=MainForm. Как это сделать?
|
| Автор: Экскалупатор 25.11.2009, 22:37 |
| как то не понятно, зачем в немодальном окне MdiParent=MainForm? просто что бы была ссылка на MainForm? так передай ее через конструктор например. |
| Автор: ДобренькийПапаша 26.11.2009, 20:32 |
| Из модального я открываю немодальное, в котором нужно указать MdiParent, ибо открывается оно в его рамках, максимизируется хотя бы... Как передать? Я не задавал бы вопроса, если бы знал как получить ссылку на нужную форму (MainForm, из которой открываю модальное окно, которое в свою очередь открывает немодальное и в рамках MainForm). |
| Автор: Экскалупатор 26.11.2009, 22:47 | ||
что значит немодальное в рамках MainForm? я не понимаю как это должно выглядеть. объясни для чего в немодальном окне указывать на MdiParent? если просто ссылку то укажи в конструкторе класса фотмы(которая не модальная) что нужно передать в него ссылку на объект MainForm. и при создании этого не модального окна передавай в него ссылку. |
| Автор: ДобренькийПапаша 27.11.2009, 18:22 |
| Из главного окна, по пункту меню выбирается пункт "Оплатившие студенты", появляется модальное окно, где запрашивается курс, семестр, сума оплаты, после этого надо (не знаю как можно по другому) создать окно, в котором вывести в ListView всех студентов, соответствующих запросу. Вот так. Честно говоря, точно также сделано в другой программе, в данном случае я просто хотел скопировать то же, что сделано в другой аналогичной программе. |
| Автор: Экскалупатор 27.11.2009, 18:49 | ||
ДобренькийПапаша, почему все таки не модальное окно нужно не понятно. вопрос в другом, что потом делать со списком стундентов? почему не отобразить список студентов в первом окне? т.е. по пункту меню всплывает окно(кстати зачем оно модальное тоже не понятно, можно просто сделать ShowDialog()), когда пользователь выбрал все что хотел и нажал "ок" окно закрылось и появился список(результат) в основном окне. или если нужно проверить результат выбора сразу, до нажатия на "ок"(ну мало ли, пользователь не уверен какие именно студенты ему нужны) то можно результат вывести в том же окне. короче пока что не вижу необходимости в каком то лишнем окне. если не прав то объясни более подробно. ну и конечно надо решить что делать со списком студентов. если нужно получать к нему(списку) доступ из основного окна, то лучше просто отобразить его там(сделать область для вывода результатов).
как вариант, и мне кажется было бы лучше всего, сделать класс который бы обрабатывал все это дело и создавал тебе нужные окна. если у тебя окно для выбора группы и курса модальное, то значит если тебе нужен список то делай его тоже модальным, можно сделать путем возврата данных в основную форму и что бы потом они из нее отправились туда куда нужно.(лучше конечно реализовать отдельный класс бизнес логики, который бы всем этим управлял). |
| Автор: ДобренькийПапаша 27.11.2009, 19:22 |
| ну нельзя мне в основном окне это отображать, там всё забито. Может мне вместо ShowDialog(), воспользоваться Show(), при его открытии написать NotModal.MdiParent=this; (ссылка на основное) А теперь при вызове нового окна с выбранными студентами написать: sps.MdiParent=this.MdiParent; sps.Show(); Видимо это самое простое... Чё мучился, непонятно. Или я не прав? |
| Автор: diadiavova 27.11.2009, 19:38 |
| ДобренькийПапаша, ну а как это делается со стандартными окнами? Запускаешь окно, дальше если пользователь ввёл данные нажал ок, считывается информация из этого окна и на её основе выпоняются действия. По сути дела, в твоём случае окно запускается только для того, чтобы узнать курс, семестр и сумму оплаты. Приаттачил пример |
| Автор: Экскалупатор 27.11.2009, 19:43 | ||
совсем все? интересно сколько ж у тебя там всего? можно кстати табпэйдж использовать... а вообще если уж негде отобразить, то(как я уже писал) запускай свою форму для выбора группы(и чего там у тебя еще надо) студентов, потом когда пользователь выбрал, возвращай результат в MainForm, а потом уже из MainForm создавай второе окно(хочешь модальное, хочешь обычное) и в нем отображай список. второе окно получится как бы плавающей подсказкой к MainForm |
| Автор: ДобренькийПапаша 27.11.2009, 20:40 |
| Да что-то я по правде перемудрил. Ведь любые данные из модального можно вернуть в главное, а оттуда вызвать новое окно приспокойно и передать туда данные. Что и сделал в примере diadiavova. Да, бывает, реально перемудрил чего-то))) Спасибо всем. Спасибо diadiavova и спасибо Экскалупатор. |