Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сослаться на MdiParent, из модального окна 
V
    Опции темы
ДобренькийПапаша
Дата 25.11.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Пользователь кликает по пункту меню в MdiContainer (MainForm), и запускает модальное окно, в нём что-то делает и тыкает ОК, теперь надо запустить немодальное окно, и присвоить ему MdiParent=MainForm. Как это сделать?

Код

private void bAccept_Click(object sender, EventArgs e)
        {
            if(CheckOnValid())
            {
                
                StudentPaymentStatistics sps=
                    new StudentPaymentStatistics(int.Parse(tbCourse.Text), int.Parse(tbSemester.Text));
                sps.Show();                      //надо сcылку sps.MdiParent=MainForm
                this.DialogResult = DialogResult.OK;
            }
            else
            {
                MessageBox.Show("Некорректные данные", "Проверка", 
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }


Это сообщение отредактировал(а) ДобренькийПапаша - 25.11.2009, 17:43


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 25.11.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



как то не понятно, зачем в немодальном окне MdiParent=MainForm? просто что бы была ссылка на MainForm? так передай ее через конструктор например.
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 26.11.2009, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Из модального я открываю немодальное, в котором нужно указать MdiParent, ибо открывается оно в его рамках, максимизируется хотя бы...
Как передать? Я не задавал бы вопроса, если бы знал как получить ссылку на нужную форму (MainForm, из которой открываю модальное окно, которое в свою очередь открывает немодальное и в рамках MainForm).


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 26.11.2009, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Цитата

MainForm, из которой открываю модальное окно, которое в свою очередь открывает немодальное и в рамках MainForm


 smile 

что значит немодальное в рамках MainForm? я не понимаю как это должно выглядеть. объясни для чего в немодальном окне указывать на MdiParent?
если просто ссылку то укажи в конструкторе класса фотмы(которая не модальная) что нужно передать в него ссылку на объект MainForm. и при создании этого не модального окна передавай в него ссылку.
PM MAIL ICQ   Вверх
diadiavova
Дата 27.11.2009, 04:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



Цитата(ДобренькийПапаша @  26.11.2009,  20:32 Найти цитируемый пост)
Из модального я открываю немодальное, в котором нужно указать MdiParent

Я что-то даже не могу представить себе ситуацию, в которой может понадобиться такая логика. Честно говоря я даже сомневаюсь в том, что такое возможно(хоть сам и не пробовал такое делать smile ). 
Модальный диалог запускается для того, чтобы запросить у пользователя некоторую информацию. Далее по результатам запроса все необходимые действия обычно выполняются уже в самой главной форме. А открывать дочернее окно из модального диалога - ИМХО, бред.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
ДобренькийПапаша
Дата 27.11.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Из главного окна, по пункту меню выбирается пункт "Оплатившие студенты", появляется модальное окно, где запрашивается курс, семестр, сума оплаты, после этого надо (не знаю как можно по другому) создать окно, в котором вывести в ListView всех студентов, соответствующих запросу.
Вот так. Честно говоря, точно также сделано в другой программе, в данном случае я просто хотел скопировать то же, что сделано в другой аналогичной программе.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
Экскалупатор
Дата 27.11.2009, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



ДобренькийПапаша, почему все таки не модальное окно нужно не понятно. вопрос в другом, что потом делать со списком стундентов? почему не отобразить список студентов в первом окне? т.е. по пункту меню всплывает окно(кстати зачем оно модальное тоже не понятно, можно просто сделать ShowDialog()), когда пользователь выбрал все что хотел и нажал "ок" окно закрылось и появился список(результат) в основном окне. или если нужно проверить результат выбора сразу, до нажатия на "ок"(ну мало ли, пользователь не уверен какие именно студенты ему нужны) то можно результат вывести в том же окне. короче пока что не вижу необходимости в каком то лишнем окне. если не прав то объясни более подробно. ну и конечно надо решить что делать со списком студентов. если нужно получать к нему(списку) доступ из основного окна, то лучше просто отобразить его там(сделать область для вывода результатов).

Цитата

создать окно, в котором вывести в ListView всех студентов, соответствующих запросу.


как вариант, и мне кажется было бы лучше всего, сделать класс который бы обрабатывал все это дело и создавал тебе нужные окна. если у тебя окно для выбора группы и курса модальное, то значит если тебе нужен список то делай его тоже модальным, можно сделать путем возврата данных в основную форму и что бы потом они из нее отправились туда куда нужно.(лучше конечно реализовать отдельный класс бизнес логики, который бы всем этим управлял).
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 27.11.2009, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



ну нельзя мне в основном окне это отображать, там всё забито.
Может мне вместо ShowDialog(), воспользоваться Show(), при его открытии написать NotModal.MdiParent=this; (ссылка на основное)
А теперь при вызове нового окна с выбранными студентами написать:
sps.MdiParent=this.MdiParent;
sps.Show();

Видимо это самое простое...
Чё мучился, непонятно.

Или я не прав?


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
diadiavova
Дата 27.11.2009, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 18
Всего: 142



ДобренькийПапаша, ну а как это делается со стандартными окнами? Запускаешь окно, дальше если пользователь ввёл данные нажал ок, считывается информация из этого окна и на её основе выпоняются действия. По сути дела, в твоём случае окно запускается только для того, чтобы узнать курс, семестр и сумму оплаты.
Приаттачил пример

Присоединённый файл ( Кол-во скачиваний: 6 )
Присоединённый файл  DlgReq.rar 45,66 Kb


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Экскалупатор
Дата 27.11.2009, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 5
Всего: 24



Цитата

там всё забито.


совсем все? интересно сколько ж у тебя там всего? можно кстати табпэйдж использовать...

а вообще если уж негде отобразить, то(как я уже писал) запускай свою форму для выбора группы(и чего там у тебя еще надо) студентов, потом когда пользователь выбрал, возвращай результат в MainForm, а потом уже из  MainForm создавай второе окно(хочешь модальное, хочешь обычное) и в нем отображай список. второе окно получится как бы плавающей подсказкой к MainForm
PM MAIL ICQ   Вверх
ДобренькийПапаша
Дата 27.11.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 14.1.2006
Где: г.Москва

Репутация: 3
Всего: 7



Да что-то я по правде перемудрил. Ведь любые данные из модального можно вернуть в главное, а оттуда вызвать новое окно приспокойно и передать туда данные. Что и сделал в примере diadiavova.

Да, бывает, реально перемудрил чего-то))) 
Спасибо всем. Спасибо  diadiavova и спасибо Экскалупатор.


--------------------
Меня зовут Себастьян Парейра, торговец чёрным деревом.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.