Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/74: Рейтинг темы: голосов - 74, средняя оценка - 4.61
3 / 3 / 0
Регистрация: 28.02.2011
Сообщений: 95

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

05.05.2011, 23:38. Показов 13764. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасте гуру!
Есть такая проблема, пытаюсь обновить (перерисовать?) treeview в родительской форме при закрытии дочерней формы, в которой производились всякие разные манипуляции с деревом и новое дерево записывалось в файл.
Вот код, так почему-то не работает:
C#
1
2
3
4
5
6
7
8
9
        private void SaveResultButton_Click(object sender, EventArgs e)
        {
            MainView mv = new MainView();//родительская форма
            Serialize.saveTree(TreeView, "tree");//сохраняем ("сериализуем") дерево
            mv.TreeView.Nodes.Clear(); //отчищаем родительское дерево 
            Serialize.loadTree(mv.TreeView, "tree");//выгружаем дерево в родительскую форму 
            mv.TreeView.Refresh();//перерисовываем дерево(написал уже от безысходности ТТ)
            this.Close();//собственно закрываем дочернюю форму
        }
Что не так делаю, подскажите пожалуйста! Спасибо всем откликнувшимся.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.05.2011, 23:38
Ответы с готовыми решениями:

Как при закрытии дочерней формы обновить компоненты на родительской
Здравствуйте. Собственно есть дочерняя форма(запущена showdialog()) и на ней кнопка(close()). Как сделать чтоб при нажатии на эту кнопку...

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

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

6
Заблокирован
06.05.2011, 22:43
mr.nothing, выложи проект. Так будет проще разобраться с твоими проблемами.
1
3 / 3 / 0
Регистрация: 28.02.2011
Сообщений: 95
06.05.2011, 22:56  [ТС]
Вот он! Спасибо за отклик! Нужно чтобы после манипуляций над деревом в форме EditTree (ну или после закрытия формы EditTree), новое "измененное" дерево отображалось в родительской форме MainView

p.s. Это собственно 2 оставшиеся проблемы проекта, над которыми я бьюсь уже не первую неделю. Вот вторая:
Сериализация для иконок узлов дерева

Еще раз спасибо за отклик.
Вложения
Тип файла: zip WindowsForms.zip (1.29 Мб, 69 просмотров)
0
Заблокирован
06.05.2011, 23:45
Думаю, что так у тебя ничего не получится. Вот тебе простейший пример. Попробуй так же изменить хотя бы заголовок окна главной формы из второй
C#
1
2
3
 Form1 f1 = new Form1();
            f1.Text = "новый заголовок";
            Close();
Правильно. Не меняется. А если ты сделаешь хотя бы так:
в первой форме
C#
1
2
3
4
5
6
7
8
9
10
11
public static string newtext = "старый заголовок";
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f2 = new Form2();
            f2.Show();
        }
 
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            this.Text = newtext;
        }
и во второй
C#
1
2
3
4
5
private void button1_Click(object sender, EventArgs e)
        {
            Form1.newtext = "новый заголовок";            
            Close();
        }
Работать будет.
Походу тебе надо создавать или статические переменные или делать доступ к переменным через свойства.
0
Заблокирован
07.05.2011, 08:10
Цитата Сообщение от SSV Посмотреть сообщение
Походу тебе надо создавать или статические переменные или делать доступ к переменным через свойства.
Ерунда.
Тебе надо перерисовывать родительскую форму.
Самый простой способ - это во второй делать при сохранении
C#
1
 Application.Restart();
Или в первой
C#
1
2
3
4
5
 private void MainView_Paint(object sender, PaintEventArgs e)
        {
            TreeView.Nodes.Clear();
             Serialize.loadTree(TreeView, "tree"); 
        }
Но не всегда это срабатывает.
Можно попробовать во второй форме при сохранении попытаться перерисовывать первую
C#
1
2
3
4
5
6
7
8
 private void SaveResultButton_Click(object sender, EventArgs e)
        {
          MainView mv = new MainView();//родительская форма
           Serialize.saveTree(TreeView, "tree");//сохраняем ("сериализуем") дерево
           mv.WindowState = FormWindowState.Minimized;           
           mv.WindowState = FormWindowState.Maximized;       
            this.Close();//собственно закрываем дочернюю форму
        }
Но тоже не всегда срабатывает((( Короче, экспериментируй...
1
Заблокирован
07.05.2011, 09:59
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Sergei_, ну ты и намутил. Если делать как ты предлагаешь - то лучше воспользоваться событием Activated
C#
1
2
3
4
5
private void MainView_Activated(object sender, EventArgs e)
        {
            TreeView.Nodes.Clear();
            Serialize.loadTree(TreeView, "tree");
        }
Это не надо... я закомментировал
C#
1
2
3
4
5
6
public MainView()
        {
            InitializeComponent();
         //   Serialize.loadTree(TreeView, "tree");
            
        }
........................................ .................................
C#
1
2
3
4
5
private void SaveResultButton_Click(object sender, EventArgs e)
        {           
            Serialize.saveTree(TreeView, "tree");//сохраняем ("сериализуем") дерево
             this.Close();//собственно закрываем дочернюю форму
        }
0
3 / 3 / 0
Регистрация: 28.02.2011
Сообщений: 95
07.05.2011, 18:45  [ТС]
Спасибо огромное! Получилось добиться того, что нужно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.05.2011, 18:45
Помогаю со студенческими работами здесь

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

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

Завершение процесса при закрытии дочерней формы
Много разных способов в интернете и мало толковых разъяснений. Подскажите как осуществить сие деяние?

Завершение задач при закрытии дочерней формы
Что мы имеем. - дочерняя форма программы. - мой класс, в котором реализована работа с Task-ами (ThreadController). в этом...

При закрытии дочерней формы, почемуто закрывается все приложение
В Programme.cs Application.Run(new Form6()); тоесть главная форма это форм 6. Но когда я пишу в обработчике другой дочерней формы...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
[В процессе разработки] SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru