0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
1

Паразитные копии модальной формы

13.04.2016, 07:20. Показов 1355. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
На главной форме есть кнопка. Кликая на ее мы получаем другую форму, в виде модального диалога. После закрытия модальной формы и опять кликая по нашей кнопки мы в итоге получаем две копии модальных форм и количество копий с каждым кликом растет. Как с этим бороться?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.04.2016, 07:20
Ответы с готовыми решениями:

Выполнение модальной формы в отдельном потоке
Здравствуйте В приложенном архиве находится программа, в которой по нажатию Add открывается...

Передача данных их модальной формы в родительскую
Всем доброго дня. Прошу прощения за глупы вопрос, но ответа на него найти не могу и поэтому...

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

Создание модальной формы при закрытии основной
Доброй ночи. Есть задача - при попытке закрытия формы с TextBox вывести модальное окно, в котором...

14
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 07:31 2
Цитата Сообщение от Makeevi Посмотреть сообщение
мы в итоге получаем две копии модальных форм и количество копий с каждым кликом растет
Откуда инфа?
Цитата Сообщение от Makeevi Посмотреть сообщение
Как с этим бороться?
using () {}
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 07:39  [ТС] 3
Цитата Сообщение от Rius Посмотреть сообщение
Откуда инфа?
Не понял вопроса?
0
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 07:49 4
Makeevi, при выходе за область видимости ссылка на объект окна теряется и подчищается сборщиком мусора по мере необходимости. Откуда известно, что количество копий растёт? И чем это плохо?
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 08:16  [ТС] 5
Цитата Сообщение от Rius Посмотреть сообщение
И чем это плохо?
Что было нужно: нажав на кнопку первой формы выходить форма2. Проделав манипуляции на форме2 мы ее закрываем и все.
По факту: после закрытия формы2 тут же появляется новая форма2.
0
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 08:21 6
Цитата Сообщение от Makeevi Посмотреть сообщение
По факту: после закрытия формы2 тут же появляется новая форма2.
Ищите баг в своём коде. Само по себе ничего не появляется.

С модальными окнами можно так обращаться:
C#
1
2
3
4
5
6
7
using (var dialog = new FormDialog())
{
  if (dialog.ShowDialog() == DialogResult.OK)
  {
    ...
  }
}
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 08:24  [ТС] 7
Цитата Сообщение от Rius Посмотреть сообщение
Откуда известно, что количество копий растёт?
Закрыв все копии формы2 и заново кликая кнопку на первой форме, то мы получим новую порцию окон формы2. Проделав заново это манипуляцию мы получим формы2 в увеличенном количестве.
0
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 08:26 8
Makeevi, у модальных окон нет копий. Они показываются в одном экземпляре и при этом блокируют вызывающий код. Невозможно кликнуть по кнопке вызова модального окна, если предыдущее не было закрыто.
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 08:31  [ТС] 9
Я же говорю они открываются по очереди ). Дно окно закрыл и тут же появилась новое.
0
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 08:33 10
А я говорю, ищите ошибку в коде у себя, если не хотите его здесь показывать.
0
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 08:33  [ТС] 11
C#
1
2
3
4
private void ДобавитьПродкут_Click(object sender, EventArgs e)
        {
            Технологическая_карта  Обзор = new Технологическая_карта();
Обзор.ShowDialog();

вроде все банально..
0
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 08:37 12
Лучший ответ Сообщение было отмечено Makeevi как решение

Решение

Банально. Так в чём проблема? Тут её нет.

Добавлено через 2 минуты
Хотя нет, потенциально есть - русские имена классов, файлов, функций. Огребёте проблем с них когда-нибудь.
1
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 08:41  [ТС] 13
Спасибо посижу, подумаю.
0
Эксперт .NET
10529 / 6457 / 1502
Регистрация: 25.05.2015
Сообщений: 19,579
Записей в блоге: 14
13.04.2016, 08:42 14
Цитата Сообщение от Makeevi Посмотреть сообщение
Проделав заново это манипуляцию мы получим формы2 в увеличенном количестве.
Вас беспокоит утечка памяти, которая была бы в C++? Если в форме нет неуправляемых ресурсов и форма создаётся быстро, не стоит беспокоиться.
1
0 / 0 / 0
Регистрация: 13.04.2016
Сообщений: 15
13.04.2016, 10:14  [ТС] 15
Спасибо большое. Разобрался
0
13.04.2016, 10:14
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.04.2016, 10:14
Помогаю со студенческими работами здесь

Открытие модальной формы авторизации без возможности сворачивания
Здравствуйте! У меня есть форма авторизации, нужно сделать так, чтобы в главной форме человек...

Отображение формы вместо запуска копии приложения, если приложение уже запущенно
Столкнулся с проблемой. Есть программа, сделал чтобы при сворачивании она не отображалась в трее и...

Вызов модальной формы из модальной, нужно:закрытие последней и не закрытие первой.
1. Вызываю модальную форму из главной формы (немодальной). 2. Вызываю другую модальную форму из...

Вывод модальной формы после отправки формы AJAX
Здравствуйте, помогите, пожалуйста, разобраться, есть модальная форма arcticmodal для просмотра...

Выход из модальной Формы
Здравствуйте! У меня несколько форм. Основная форма создается Auto create forms, остальные в...

Сворачивание модальной формы
Доброго времени суток. Воспользовался советом форумчанина как правильно сделать форму логина ....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru