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

Передача данных из дочерней формы в главную

24.12.2014, 21:40. Показов 5053. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе времени суток! Сразу к сути проблемы. Имею две формы дочернюю и родительскую. В дочерней произвожу рисование на PictureBox. Все работает прекрасно. Проблема в том, что мне нужно передать данные из дочерней формы в родительскую, в моем случае, чтобы при нажатии на кнопку родительской формы, происходило сохранение нарисованного. Использую слово родитель, но код не работает. Пишет "Ссылка на объект не указывает на экземпляр объекта". Ошибку выдает тут
C#
1
Rectangle r = f.panelGraphFunction.RectangleToScreen(f.panelGraphFunction.ClientRectangle);
В чем причина? Помогите пожалуйста. Вот код моей главной формы. Заранее спасибо!
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 private void новыйToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 fc = new Form2();
            fc.MdiParent = this;
            fc.Show();
            сохранитьВИзображенииToolStripMenuItem.Enabled = true;
            сохранитьВHTToolStripMenuItem.Enabled = true;
        }
 
        public void сохранитьВИзображенииToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form2 f = this.Owner as Form2;
            Rectangle r = f.panelGraphFunction.RectangleToScreen(f.panelGraphFunction.ClientRectangle);
            Bitmap b = new Bitmap(r.Width, r.Height);
            Graphics g = Graphics.FromImage(b);
            g.CopyFromScreen(r.Location, new Point(0, 0), r.Size);
            SaveFileDialog dialog = new SaveFileDialog();
            dialog.Filter = "Jpeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
            dialog.Title = "Сохранить рисунок";
            dialog.ShowDialog();
            if (dialog.FileName != string.Empty)
                b.Save(dialog.FileName);
        }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.12.2014, 21:40
Ответы с готовыми решениями:

Передача исключения из дочерней формы в главную
Всем привет! Простая программа: первая форма с кнопкой. По нажатию на кнопку создается вторая форма и открывается private void...

Передача данных из дочерней формы в родительскую
Добрый день! Мне нужно из главной формы вызывать дополнительное окно с DateTimePicker. Пишу следующее: var f2...

Отправка данных из дочерней формы(программно созданной) в главную форму
Добрый вечер. Проблема в следующем: создал программно форму с двумя полями ввода и двумя кнопками. Для второй кнопки "Закрыть"...

5
74 / 26 / 19
Регистрация: 13.10.2014
Сообщений: 89
24.12.2014, 22:46
Строка 12
C#
1
Form2 f = this.MdiParent as Form2;
0
3 / 2 / 0
Регистрация: 19.02.2014
Сообщений: 71
24.12.2014, 23:04  [ТС]
jumperAlex, выдает ошибку все-равно
Миниатюры
Передача данных из дочерней формы в главную  
0
74 / 26 / 19
Регистрация: 13.10.2014
Сообщений: 89
24.12.2014, 23:08
Лучший ответ Сообщение было отмечено IamMorgan как решение

Решение

IamMorgan, извини, не понял сразу, где находится тулбар.
в данном случае прокатит
C#
1
Form2 f = this.MdiChildren[0] as Form2;
1
3 / 2 / 0
Регистрация: 19.02.2014
Сообщений: 71
24.12.2014, 23:27  [ТС]
jumperAlex, Спасибо огромное)) Работает!!!

Добавлено через 14 минут
jumperAlex, Извините конечно, а что бы нужно было бы писать, если бы был обратный процесс, тоесть передача от главной к дочерней?

Добавлено через 2 минуты
C#
1
2
 FormMain f = this.ParentForm as FormMain;
            f.сохранитьВИзображенииToolStripMenuItem.Enabled = false;
??
0
74 / 26 / 19
Регистрация: 13.10.2014
Сообщений: 89
24.12.2014, 23:31
IamMorgan, сам же написал
Цитата Сообщение от IamMorgan Посмотреть сообщение
Form2 fc = new Form2();
* * * * * * fc.MdiParent = this;
Суть - у дочерней формы устанавливаешь свойство MdiParent равным главной форме, значит чтобы обратиться из дочерней к главной достаточно обратиться к этому же свойству, которое ты же и назначил)
"Но это лирика. ©" Если все же смотреть в принципы ООП, в этом случае нас интересует инкапсуляция, необходимо оформить нужные поля объекта класса как public свойства с соответствующими акцессорами get-set.
И передачу данных между формами сделать через эти свойства. При создании дочерней формы я бы поместил для удобства в ее конструктор объект класса главной формы + в нем же выделил поле для дочерней формы, таким образом связал бы их.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
24.12.2014, 23:31
Помогаю со студенческими работами здесь

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

Передача данных из дочерней формы в родительскую
Всем доброго вечера! Помогите плиз разобраться с проблемой. Есть проект на MFC С++. Из "Property page" по нажатию кнопки...

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

Вывод из дочерней формы в главную
Есть две формы, форма1(Главная) и форма2(Побочная, которую вызываю из главной). Так вот, при по пытке вывода строки из побочной формы2 в...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru