|
1 / 1 / 0
Регистрация: 10.04.2010
Сообщений: 11
|
|||||||||||||||||||||
Связка двух форм03.02.2012, 02:24. Показов 5573. Ответов 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 форм Связка нескольких форм обратной связи Связка всех форм одной переменной Связывание двух форм по расположению на мониторе(Синхронизация форм)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes.
А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения
развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам
Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|