|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
|||||||||||||||||||||
Связка двух форм03.02.2012, 02:24. Показов 5598. Ответов 13
Метки нет (Все метки)
Пишу курсач. MSVS 2010
Задача на данном этапе: Имеется две формы Form1(главное окно) и Form2(некое окно настроек). Нужно их свзяать так, что бы из Form1 вызвать Form2 и в ней изменять свойства, функции и переменные Form1. В файл Form1.h вставил строку:
Добавление строк
Как сделать так, что бы изменять Form1 в Form2?
0
|
|||||||||||||||||||||
| 03.02.2012, 02:24 | |
|
Ответы с готовыми решениями:
13
Связка двух форм и непонятное окно
Связка форм |
|
24 / 24 / 2
Регистрация: 26.07.2009
Сообщений: 414
|
|
| 03.02.2012, 19:12 | |
|
Напиши пример, через какой код открывать другое окно, что знаешь и, как знаешь пиши! У меня, ни в какую, не получается сделать код!
0
|
|
|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
||
| 03.02.2012, 20:58 [ТС] | ||
|
Добавлено через 1 час 6 минут Я нашёл выход из своей ситуации. Основной задачей теперь стало: Выполнить подпрограмму формы1 после закрытия формы2. - Как реализовать?
0
|
||
|
|
||
| 03.02.2012, 22:00 | ||
|
В случае если окно немодальное предусмотрите скажем флаг которог осуществит индикацию что вы нажали ОК в окошке, в программе парсите состояние данного флага. Если же окно было модальным в то вам нужно обработать if(MyOption.DoModal() == IDOK){} при этом MyOption должно быть членом класса 2-й формы Form2 MyOption, правда я написал всё проведя некие аналогии с MFC, т.к. вижу что методы вызова окна сходны, думаю и реализация должна быть тоже сходной...
0
|
||
|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
|
| 03.02.2012, 22:07 [ТС] | |
|
-=ЮрА=-,
Спасибо за идею. Но я приёл к выводу, что после манипуляций во второй форме, мне потребует вызвать функцию первой формы, которая автоматом обновит данные на ней. я всё никак не могу побороть "необъявленый идинтификатор форм1". Нашёл похожую тему на мсдн, но не могу её реализовать в своём проекте.
0
|
|
|
Комп_Оратор)
|
||
| 04.02.2012, 01:29 | ||
|
private Form1 refForm; public Form2(Form1 refForm) { InitializeComponent(); this.refForm = refForm; } В моей vs2008 - не катит, а у Вас? Ну то есть сама попытка объявления private: Form1 refForm; вызывает бурю негодования хотя Intelisense при использовании полного квалификатора доступа начиная с namespace проекта услужливо подсказывает, то есть вроде видит объявление Form1... Подозрение, что предложенный вариант умозрителен (не компилировался) усилено тем что в оригинале: private Form1 refForm; //пропущено двоеточие. Вот так вот
0
|
||
|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
|
| 04.02.2012, 03:05 [ТС] | |
|
IGPIGP,
Не откомпилировался, но я почти решил проблему с этим вариантом. Этот автор предоставил ещё такой вариант. В любом случае,я могу обратиться к процедурам формы1 и перед показом формы2 запускать таймер, который отлавливает состояние глобальной переменной,после изменений в форме2 менять эту переменную и таймер услужливо обновит состояние формы1 и отключится. Но это как-ьто не профессионально =) Добавлено через 55 минут Нашёл идеальный вариант, но что-то не получается его использовать... Добавлено через 30 минут Решил проблему, облазив сотни страниц, я всё таки нашёл грамотное решение, позже выложу объяснения, так как заметил, что проблема частая и мало материала по ней.
1
|
|
|
Комп_Оратор)
|
|||||||||||||
| 04.02.2012, 15:10 | |||||||||||||
|
Однако если, у Вас к какому-то моменту готов набор данных, например в текстбоксах, можно так: Созданы Form1.h в котором public ref class Form1 и f2.h в котором public ref class F2. в Form1.h:
![]() Добавлено через 11 часов 16 минут 1.Создаем проект с именем testApp 2.Form1 создается автоматически. 3.В окне Solution explorer правой кнопкой на имени проекта testApp -> add -> new item ->class -> windows form-> вводим имя Form2. Получаем Form2.h. 4.На фолдере Source Files правой кнопкой->add -> new item ->cpp-> вводим имя Form1. Получаем Form1.cpp. 5.Вставляем в полученный Form1.cpp: #include "StdAfx" и еще 2 хидера форм, впрочем, остальное копируется прямо со веб-странички. ![]() Если вы создали проект с другим именем - не забудьте изменить в using namespase в Form1.cpp. Это единственный случай, где придется подредактировать, ну а кнопку, этикетку - руками. ![]() Что касается сути, то как вариант - вполне. Не нравится - использование составного хидера. Нравится - не нужно отказываться от удобств дизайнера. В целом - +1 в моей коллекции. Посмотрите в этом же форуме 2-мя постами ниже. "Идентификатор вне области видимости" от DartLenin. Предложенный мной вариант в этом посте - те же ритмы, те же движения, но бубен - в левой руке... Спасибо. Жду Вашего идеального варианта с нетерпением.
0
|
|||||||||||||
|
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
|
||||||||||||||||
| 04.02.2012, 15:52 | ||||||||||||||||
|
нужно всего лишь создать событие в Form2
а в Form1 создать обработчик этого события. А когда нужно что-то изменить в Form1 просто вызываем это событие из Form2 грубо говоря
0
|
||||||||||||||||
|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
||||||||||||||||||||||||||||||||||||
| 04.02.2012, 15:58 [ТС] | ||||||||||||||||||||||||||||||||||||
|
IGPIGP,
Это не новый файл, а cpp файл формы проекта, тоесть, если проект носит имя HelloWorld, то этот самый Form1.cpp называется HelloWorld.cpp. Автор не верно указал. Не уверен в его идеальности, но мне он подходит полностью. 1. Создаём проект под именем Form1, вешаем на главную форму кнопку и лейбл, добавляем новую форму под именем Form2, вешаем на неё кнопку. 2. В разделе public файла Form1.h пишем свой метод, например:
0
|
||||||||||||||||||||||||||||||||||||
|
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
|
|
| 04.02.2012, 16:09 | |
|
IGPIGP, ну я твое сообщение не читал)
так события и нужны для связи объектов. И не надо никаких премудростей, все понятно и просто
1
|
|
|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
|
| 04.02.2012, 16:13 [ТС] | |
|
IGPIGP,
sandye51, Да, я заметил что в C# попроще всё.
0
|
|
|
Комп_Оратор)
|
|||||
| 04.02.2012, 16:36 | |||||
:![]() Материал Ваш посмотрю обязательно. Добавлено через 10 минут А что не читал, - так я и сам такой![]() Добавлено через 5 минут все казалось, ещё не так плохо (Жютка юмора, как говорят в Одессе).
0
|
|||||
| 04.02.2012, 16:36 | |
|
Помогаю со студенческими работами здесь
14
Связка 2 форм Связка нескольких форм обратной связи Связка всех форм одной переменной Связывание двух форм по расположению на мониторе(Синхронизация форм)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
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
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|