| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Закрытие родительского модального окна |
| Автор: BENJ 21.7.2014, 14:01 |
| Уважаемые спецы в vb.net Возникла глупая проблема. 1. Открывается главное окно программы. 2. Из него вызывается диалоговое модальное окно. Все ОК. 3. Из этого окна вызывается еще одно диалоговое модальное окно. Все ОК. 4. Закрываю последнее окно в обработчике кнопки ОК: Me.DialogResult=System.Windows.Forms.DialogResult.OK Me.Close() 5. Окно закрывается и одновременно закрывает родителя из которого, оно и вызвано было. Вопрос: Почему это происходит и как избежать этого. Спасибо |
| Автор: diadiavova 21.7.2014, 14:44 |
| Me.Close здесь лишнее |
| Автор: BENJ 21.7.2014, 16:13 |
| ничего не помогает. Уже просто тупо попеременно убираю каждую строчку, ничего не меняется. Дело наверное не в этом. Проделал эксперимент. Вместо вызова последнего окна, вызвал MsgBox("o'k"). Эффект тот же. |
| Автор: diadiavova 21.7.2014, 18:27 |
| BENJ, мне не приходилось вызывать модальный диалог из модального диалога, так ч о точно не скажу, но могу предположи ь, что когда ты пр сваиваешь значение диалогрезульту, то закрываются все модальные окна и присвоенное значение возвращает первое окно. Видимо так задумано, проверь. |
| Автор: baldina 21.7.2014, 18:42 |
а как выглядит код родителя, вызывающий второе окно? |
| Автор: BENJ 21.7.2014, 21:42 |
| очень просто dim dlg as new dialog1 if dlg.ShowDialog = Windows.Forms.DialogResult.OK then ............................ end if Добавлено через 7 минут и 4 секунды Нашел подобную ситуацию в другой части проекта. Все работает как часы. Никакой разницы в свойствах форм и настройках не нашел. Только имена, естественно, другие. Проект разр. в VS2005. Может быть есть глюки какие-то? |
| Автор: baldina 21.7.2014, 21:59 |
| т.е. код на месте "............................" не выполняется? и (если, скажем, поставить точку останова) мимо отладчика проскакивает? Добавлено через 56 секунд можно попробовать пересоздать код/диалог заново в проекте. но это бубен.. |
| Автор: BENJ 22.7.2014, 13:00 |
| конечно, есть где-то заковыка, причем как всегда, самая примитивная. Решил создать род. диалог с чистого листа. Скопировал все контролы со старого и вставил в новый. И.. ничего не изменилось! Код выложить по понятным причинам не могу, но организация интерфейса в принципе стандартная и код тоже. Спасибо |
| Автор: BENJ 22.7.2014, 13:45 |
| Нашел!!! Прежде чем поделиться, хочу добавить что я программер в с++ и MFC.(чтобы не подумали куку-чуку). А теперь что произошло. Когда было создано новое род. окно и вставлены контролы со старого, ситуация не изменилась. Но стало ясно, что, возможно, дело в настройках контролов. Проверил почти все (34!). Но то что увидел в последних двух чуть со стула не спрыгнул. Кнопка Cancel выглядела вполне нормально, а следующая кнопка (которая и вызывала дополнительный диалог для ввода данных) оказалась копией кнопки Cancel. Т.е. чтобы сохранить размеры и цвет в новой кнопке, я просто скопировал кнопку Cancel, поменял текст и имя соответственно, НО DialogResult остался Cancel !!!. Не обратил внимание! Поэтому кнопка срабатывала как Cancel , и закрывала род. диалог!!. Для себя сделал вывод что при копировании надо внимательно просматривать все настройки нового контрола! Я благодарю всех участников обсуждения, Вы мне очень помогли! Спасибо большое! |