Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/56: Рейтинг темы: голосов - 56, средняя оценка - 4.68
3 / 3 / 0
Регистрация: 08.10.2010
Сообщений: 71
1
.NET 4.x

Как при закрытии дочерней формы обновить компоненты на родительской

22.08.2012, 11:04. Показов 10742. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Собственно есть дочерняя форма(запущена showdialog()) и на ней кнопка(close()). Как сделать чтоб при нажатии на эту кнопку обновился допустим список ListView в родительской форме?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2012, 11:04
Ответы с готовыми решениями:

Обновление родительской формы при закрытии дочерней
Здрасте гуру! Есть такая проблема, пытаюсь обновить (перерисовать?) treeview в родительской форме...

Обновить webBrowser дочерней формы из родительской
Есть две формы Form1 и Form2, на форме Form2 расположен элемент webBrowser1. Как выполнить...

Как из дочерней формы получить доступ к элементу управления родительской формы
Есть две формы: родительская(Form1) и дочерняя(Form2). В родительской форме(Form1) находятся...

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

11
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
22.08.2012, 11:13 2
взять и обновить, "оно" ведь ждет.
0
7 / 7 / 2
Регистрация: 21.08.2012
Сообщений: 62
22.08.2012, 11:39 3
Можно вызвать какой нибудь класс на родительской форме, ну или сделать рестарт всей программы.
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
22.08.2012, 11:46 4
А подписать главную форму на событие Form_Closing дочерней - религия не позволяет?
1
98 / 40 / 1
Регистрация: 08.08.2012
Сообщений: 86
22.08.2012, 11:48 5
пробуй this.Refresh(); на родительской форме

Если тебе надо чтоб обновлялось при нажатии кнопки на дочерней форме, то надо в конструктор формы передавать родительскую. И там уже вызываешь родительская_форма.Refresh();

Но насколько я понял, у тебя по нажатии на кнопку закрывается дочерняя форма, и после этого тебе надо обновить. Тогда просто добавляй this.Refresh(); сразу после showdialog(), обновление выполнится только после того, как закроется дочерняя форма.
2
3 / 3 / 0
Регистрация: 08.10.2010
Сообщений: 71
22.08.2012, 12:41  [ТС] 6
Цитата Сообщение от freeba Посмотреть сообщение
А подписать главную форму на событие Form_Closing дочерней - религия не позволяет?
Как это сделать?

Добавлено через 2 минуты
Цитата Сообщение от Интерн Посмотреть сообщение
Можно вызвать какой нибудь класс на родительской форме, ну или сделать рестарт всей программы.
Класс сделал, но обновление не происходит. Вызываю этот класс при событии при FormClosed дочерней формы. Если вызвать этот класс при нажатии кнопки на основной форме то все работает.

Добавлено через 6 минут
Цитата Сообщение от k0ndaa Посмотреть сообщение
пробуй this.Refresh(); на родительской форме

Если тебе надо чтоб обновлялось при нажатии кнопки на дочерней форме, то надо в конструктор формы передавать родительскую. И там уже вызываешь родительская_форма.Refresh();

Но насколько я понял, у тебя по нажатии на кнопку закрывается дочерняя форма, и после этого тебе надо обновить. Тогда просто добавляй this.Refresh(); сразу после showdialog(), обновление выполнится только после того, как закроется дочерняя форма.
К сожалению для Вас нет кнопки "Спасибо", выражаю Вам благодарность.
Решение:
сделал класс для обновления списка и запустил его после ShowDialog().
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
22.08.2012, 12:46 7
Цитата Сообщение от blacksmithov Посмотреть сообщение
Как это сделать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void Form1_Load(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            f.FormClosed += new FormClosedEventHandler(f_FormClosed);
            f.ShowDialog();
            
        }
 
        void f_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Refresh();//Код для обновления
        }
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
22.08.2012, 12:55 8
Цитата Сообщение от freeba Посмотреть сообщение
А подписать главную форму на событие Form_Closing дочерней - религия не позволяет?
зачем? это имело бы смысл, если бы требовалось реагировать на события в другой форме. а так - мы показали форму с помощью ShowDialog((), и мы не поедем дальше, пока она не закроется. взять и выполнить обновление после этого оператора непосредственно. какие религии? можно, конечно, намудрить с событиями, но лучше - через дверь.
0
Неадекват
1492 / 1230 / 246
Регистрация: 02.04.2010
Сообщений: 2,789
22.08.2012, 15:54 9
Какие религии спрашиваете?
В вашем случае рекламируется структурно-ориентированный подход. В моем коде событийно-ориентированный. Какой лучше в данном конкртном случае - можно спорить до дня страшного суда, но тем не менее событийно-ориентированный подход более универсален. Аминъ.
0
12 / 12 / 2
Регистрация: 02.07.2012
Сообщений: 61
22.08.2012, 18:45 10
А можно аналогичный код, но только для плюсов? Пожалуйста.
0
Почетный модератор
21400 / 9134 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
22.08.2012, 18:53 11
Цитата Сообщение от Mihey_A Посмотреть сообщение
А можно аналогичный код, но только для плюсов? Пожалуйста.
Обычно здесь "плюсы" не обсуждаются. Для них есть соответствующий раздел.

Создайте там тему и попросите перевести данный код.
0
2 / 2 / 1
Регистрация: 09.08.2017
Сообщений: 14
11.08.2017, 14:31 12
Цитата Сообщение от k0ndaa Посмотреть сообщение
Но насколько я понял, у тебя по нажатии на кнопку закрывается дочерняя форма, и после этого тебе надо обновить. Тогда просто добавляй this.Refresh(); сразу после showdialog(), обновление выполнится только после того, как закроется дочерняя форма.
Если бы не Вы....)))))) спасли меня от битья головой о стену))) не могла обновить грид вью после добавления новой строчки в xml на другой форме))) так получилось) Спасибо!

Добавлено через 15 секунд
Цитата Сообщение от k0ndaa Посмотреть сообщение
Но насколько я понял, у тебя по нажатии на кнопку закрывается дочерняя форма, и после этого тебе надо обновить. Тогда просто добавляй this.Refresh(); сразу после showdialog(), обновление выполнится только после того, как закроется дочерняя форма.
Если бы не Вы....)))))) спасли меня от битья головой о стену))) не могла обновить грид вью после добавления новой строчки в xml на другой форме))) так получилось) Спасибо!
0
11.08.2017, 14:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2017, 14:31
Помогаю со студенческими работами здесь

Closing event повторяется при закрытии родительской формы
Добрый день, создаю из главной формы новую форму - PortsForm f = new PortsForm(); ...

Ошибка при закрытии дочерней формы
Привет! Есть баг, который никак не могу исправить. Существуют 2 формы Form1 и Form2, при этом...

Как из дочерней формы получить доступ к компоненту родительской?
ПЛЗ, помогите начинающему чайнику дочернее диалоговое окно содержит чекбокс, значение которого...

Как из родительской формы поместить значения в textBox дочерней
Как из родительской формы, а именно - из выделенной строки, нулевого столбца dataGridView поместить...


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

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