Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/6: Рейтинг темы: голосов - 6, средняя оценка - 4.50
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103

После закрытия дочерней формы если у нее был public контролл, то к нему правомерно обрашаться?

02.07.2012, 10:00. Показов 1284. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Всем доброе утро.
Вопрос в названии темы. Я вот если создаю новую форму Form2 form2 динамически и если на ней добавлен ComboBox какой-нибудь и его модификатор сделан public, то после того как показываю вторую форму модально form2.ShowDialog() , то потом, после ее закрытия я также могу считывать значение того ComboBox-а.(?) А это правильно вообще-то?? Т.е. может его значение уже не гарантируется, что оно правильное? После закрытия той формы? Почему спрашиваю - если так вот поступать, то так вроде удобнее, что если что-то выбрали в этой второй форме в ComboBox-е, то после ее закрытия удобно это считать в основной форме. Но просто так правильно ли делать вот это непонятно. Спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.07.2012, 10:00
Ответы с готовыми решениями:

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

Событие закрытия дочерней формы
Всем доброго времени суток! У меня такая ситуация возникла: есть материнская форма, из-под нее открываю дочернюю форму (TForm.Show в...

Как убрать кнопки сворачивания, закрытия с дочерней MDI формы
Всем привет. Имеется одна главная форма и несколько MDI дочерних. Все хорошо работает, открывается. Но необходимо, чтоб в дочерних формах...

11
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.07.2012, 10:13
Цитата Сообщение от AleksBak Посмотреть сообщение
после ее закрытия я также могу считывать значение того ComboBox-а.(?)
сможешь
Цитата Сообщение от AleksBak Посмотреть сообщение
добавлен ComboBox какой-нибудь и его модификатор сделан public
а вот так делать не рекомендуется (нарушение инкапсуляции)
Цитата Сообщение от AleksBak Посмотреть сообщение
Но просто так правильно ли делать вот это непонятно.
неправильно. Сделай свойство, которое вернет значение из ComboBox
1
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
02.07.2012, 10:21  [ТС]
Спасибо. Вообще, по-моему, эти формы не очень-то строго себя "ведут". В смысле вроде все чинно и согласно ООП, но все же тут система сама что-то по-своему делает. Я честно так и не пойму почему при вызове метода Show() у дочернего окна оно не полностью прорисовывается (в смыле контроллы на нем)??? Это понятно, что как бы отдельная тема, но как по-моему из той же оперы.
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.07.2012, 10:24
Цитата Сообщение от AleksBak Посмотреть сообщение
почему при вызове метода Show() у дочернего окна оно не полностью прорисовывается (в смыле контроллы на нем)???
первый раз об этом слышу, скорее всего какой-то персональный глюк именно на твоей машине
0
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
02.07.2012, 10:29  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
а вот так делать не рекомендуется (нарушение инкапсуляции)
он же этот ComboBox вроде как типа "свойство". У меня почему-то не получился вариант чтобы при создании этой второй формы ей в качестве владельца в конструкторе главную форму указывать (как в ФАК-е написано).

Добавлено через 3 минуты


Цитата Сообщение от nio Посмотреть сообщение
первый раз об этом слышу, скорее всего какой-то персональный глюк именно на твоей машине
Честно. Глюков нет. Их 2 (машины). Дома и на работе(даже во сне Если главная форма занята мощными вычислениями к примеру и я ничтожесумнящийся, решил вызвать form2.Show(), то у этой form2 прорисуется только ее каркас, а компоненты внутри ничего не прорисуются. ?? Спасибо. (А когда ShowDialog() если вызвать, то получается уже модальное окно, но при этом все прорисовывается нормально)
0
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.07.2012, 10:36
Цитата Сообщение от AleksBak Посмотреть сообщение
он же этот ComboBox вроде как типа "свойство"
comboBox - field
свойство - property

Добавлено через 2 минуты
Цитата Сообщение от AleksBak Посмотреть сообщение
У меня почему-то не получился вариант чтобы при создании этой второй формы ей в качестве владельца в конструкторе главную форму указывать (как в ФАК-е написано)
тут бы код посмотреть
0
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
02.07.2012, 10:40  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
тут бы код посмотреть
Я его уже удалил и на прошлой неделе это было. Тогда в отд. теме потом как-нибудь приведу. Спасибо.
0
47 / 47 / 7
Регистрация: 09.06.2012
Сообщений: 148
02.07.2012, 12:39
Вообще говоря, тема обмена данными между формами обсуждается в теме:
Ответы на 7 самых частых вопросов по WinForms
0
02.07.2012, 13:29

Не по теме:

Цитата Сообщение от Besnywka Посмотреть сообщение
тема обмена данными между формами обсуждается в теме
как я понял, именно её ТС и называет ФАКом

1
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.07.2012, 14:29
Цитата Сообщение от AleksBak Посмотреть сообщение
У меня почему-то не получился вариант чтобы при создании этой второй формы ей в качестве владельца в конструкторе главную форму указывать
Для этого необходимо, что бы в h - файле второй формы присутствовало объявление первой:
#include "Form1.h", тогда указатель типа Form^ полученный конструктором второй из первой (например Form^ Form_Arg), можно привести в конструкторе же:
C++
1
this->Owner=dynamic_cast<Form1^>(Form_Arg);

Не по теме:

Извините, написал по памяти. :)

0
10 / 10 / 4
Регистрация: 14.08.2010
Сообщений: 103
03.07.2012, 10:46  [ТС]
Цитата Сообщение от IGPIGP Посмотреть сообщение
Для этого необходимо, что бы в h - файле второй формы присутствовало объявление первой:
#include "Form1.h", тогда указатель типа Form^ полученный конструктором второй из первой (например Form^ Form_Arg), можно привести в конструкторе же:
C++
1
this->Owner=dynamic_cast<Form1^>(Form_Arg);

Не по теме:

Извините, написал по памяти. :)

Спасибо. Похожим образом и поступал. Также "объявлял" во второй форме (давал ссылку) на первую и т.д. (Все-таки C++ это сверхсила ). Отдельно еще напишу.
0
03.07.2012, 12:33

Не по теме:

Цитата Сообщение от AleksBak Посмотреть сообщение
Все-таки C++ это сверхсила
Типическая сила. Причем, - строго типическая! :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2012, 12:33
Помогаю со студенческими работами здесь

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

Что делать если я не хочу чтобы метод был public?
Хух ребят я правильно все сделал ? тойсь все логично? есть вопрос допустим я не хочу делать метод Varrion был public а если сделать...

Ожидание закрытия формы и передача из неё переменной
Здравствуйте! Есть 2 формы. На 2ой только Edit и OK. Как сделать что бы при нажатии на кнопку на первой форме, открывалась форма 2 и по...

Изменение отображения значка начальной формы из формы заставки после закрытия
Никак не получается из формы заставки после ее закрытия изменить в начальной форме showiconintascbar. Никто не знает как это сделать? В...

Открытие дочерней формы после главной
Мне надо чтоб у меня было 2 формы с начало открывалась 1 потом 2 главная.Кто может дать код? И еще мне надо код чтоб как я нажимал на...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru