0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
|
||||||||||||||||
Как из второго окна обратиться к элементам первого?05.03.2012, 17:39. Показов 16201. Ответов 32
Метки нет Все метки)
(
Здравствуйте!
Изучаю VS C++. Создал проект Windows Forms в среде CLR. Есть два окна, второе (Form_insert) вызывается из первого(Form1). Из первого окна я спокойно управляю элементами во втором. А из второго окна обратиться к элементам первого не могу ![]() Так вызываю второе окно
или так:
0
|
05.03.2012, 17:39 | |
Ответы с готовыми решениями:
32
Массив. Элементы второго кратны 3 элементам первого массива Элементы первого массива прибавить к элементам второго и образовать третий Как из первого класса достучаться до объекта второго, а из второго до метода первого? |
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
|
||||||
05.03.2012, 21:05 [ТС] | ||||||
В модуле первой формы я ссылаюсь на вторую. Со второй на первую не ссылаюсь, иначе компилятор в заголовочном файле первой формы не понимает класс Form_insert
error C2065: Form_insert: необъявленный идентификатор error C2065: nwDlg: необъявленный идентификатор error C2061: синтаксическая ошибка: идентификатор "Form_insert" error C2065: nwDlg: необъявленный идентификатор error C2227: выражение слева от "->set_text" должно указывать на тип класса, структуры или объединения либо на универсальный тип error C2065: nwDlg: необъявленный идентификатор error C2227: выражение слева от "->Show" должно указывать на тип класса, структуры или объединения либо на универсальный тип Добавлено через 12 минут В этих случаях элемент textBox1 я объявляю в public секции класса Form1
0
|
Комп_Оратор)
![]() ![]() |
|||||||||||||||||||||||||||||||||||||||||
06.03.2012, 20:05 | |||||||||||||||||||||||||||||||||||||||||
![]() Решение
Объявите в Form2 скажем TextBox^ posilochka (public!)
В Form1 какй-то public: textBox11 После запуска Form2 child1 в Form1 напишите:
Это "хулиганство", но, как говорится - дёшево и сердито! //**************************************** ************// Если хотите по-другому "правильнее" и сложнее вот ещё вариант: Сделаем изменение текста в форме1 из формы2: 1) Имеются 2 формы - Form1 и Form2, на Form1 располагаются Button (button1, будет открывать вторую форму) и Label (label1, здесь будем менять текст). На Form2 - button1, по нажатию на которую будет происходить смена текста в label1. 2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных ссылок (когда Form1.h ссылается на Form2.h, который в свою очередь опять ссылается на Form1.h). Для того, чтобы этого избежать, код первой формы (Form1), который будет иметь доступ ко второй форме (Form2) мы вынесем из h-файла в cpp файл. Таким образом нужно создать файл Form1.cpp. (source files-> правая кнопка->создать) 3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1:
Form1.cpp:
Еще можно посмотреть обсуждение на зарубежном форуме по этой же проблеме - Submitting Form2 and changing Form1 by it's value. К сожалению ссылка потерялась но по Submitting Form2 and changing Form1 by it's value Google выдаст Вам ссыдку на MSDN. ![]()
4
|
![]() 5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
|
|
29.03.2012, 15:32 | |
у меня есть Form1 в ней ессть кнопка открывающая Form2
когда я пишу допустим int a в Form1 то ошибок нет и все нормально работает а если я пишу в Form2 int b то появляется ошибка переопределения Error LNK2005 есле в Form1 удалить #include "Form2.h" то ошибок не будет но Form2 не откроется
0
|
Комп_Оратор)
![]() ![]() |
|
29.03.2012, 15:52 | |
Значит в Form1 уже объявлена int b. Два раза объявлять одно и тоже имя компилятор не разрешает и это нормально. Вы же сами вставили Form2 в Form1, по-этому не используйте её имён для объявлений в Form2. В ссылке, что я предложил есть всё, что бы передавать данные между формами, но способов как это делать ещё много. Попробуйте объяснить кратко, что Вы не поняли.
0
|
Комп_Оратор)
![]() ![]() |
|
29.03.2012, 16:10 | |
Чудес не бывает - наберите просто b в Form1 и посмотрите где она определена (наведите курсор -> правая кнопка -> Go to deffinition) Совет: не используйте имен типа a, b, c, x кроме локальных. Имя не занимает памяти по-этому лучше:
int myBolshoyBizonKotoriyGivetZaBugrom=0; если уже нет выхода можно локализовать конфликтующее имя в своём пространстве имён, но у Вас похоже не тот случай.
0
|
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
|
||||||||||||||||
22.02.2013, 10:30 | ||||||||||||||||
IGPIGP,
делала как вы написали, но у меня ошибка Form2: необъявленный идентификатор по заданию во второй форме в textbox вводится слово и добавляется в первую форму в listbox сделала так
1> Form2.cpp 1> Lab1.cpp 1>Lab1.cpp(8): error C2065: Form2: необъявленный идентификатор 1>Lab1.cpp(8): error C2065: f2: необъявленный идентификатор 1>Lab1.cpp(8): error C2061: синтаксическая ошибка: идентификатор "Form2" 1>Lab1.cpp(9): error C2065: f2: необъявленный идентификатор 1>Lab1.cpp(9): error C2227: выражение слева от "->Show" должно указывать на тип класса, структуры или объединения либо на универсальный тип 1> тип: 'unknown-type' подскажите пожалуйста, что сделала не так?
0
|
Комп_Оратор)
![]() ![]() |
|
22.02.2013, 12:49 | |
darya17, Вы сделали иначе. Прочтите всё внимательно. Начните всё с пустой формы и сделайте как написано. Дело тут не в сообразительности, а в относительной сложности, для человека который это делает впервые.
1. В Main не нужно подключать 2 формы. Туда подключается главная, стартовая Form1 (обычно). 2. Во второй форме Вы ничего не подключили. Подключить это вставить в начало файла директивой #include "Form1.h". Иначе имя Form1 в файле Form2.h -ничего компилятору не говорит. Об этом он и горюет. Итак сосредоточьтесь, начните сначала и сделайте всё пошагово. Особенно внимательно вычитайте диалоги о ошибках предшественников. Я часто даю ссылки на эти темы потому, что подобные ошибки это вечные грабли для новичков. ![]()
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||
22.02.2013, 14:23 | |||||||||||
darya17, ошибка здесь
не Form1 , а просто Form - это вам не С# Это не правильно
0
|
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
|
||||||||||||||||
22.02.2013, 15:08 | ||||||||||||||||
MrCold,
исправила, но не очень помогло, теперь ругается на метод Set... посмотрите пожалуйста, может еще где то не то пишу.
1>c:\users\сергей\documents\visual studio 2010\projects\f\f\Form2.h(92): error C2039: Set: не является членом "System::Windows::Forms::Form" 1> c:\program files\reference assemblies\microsoft\framework\.netframe work\v4.0\system.windows.forms.dll: см. объявление "System::Windows::Forms::Form" 1>f.cpp(8): error C2882: Form2: недопустимое использование идентификатора пространства имен в выражении 1>f.cpp(8): error C2065: f2: необъявленный идентификатор 1>f.cpp(8): error C2061: синтаксическая ошибка: идентификатор "Form2" 1>f.cpp(9): error C2065: f2: необъявленный идентификатор 1>f.cpp(9): error C2227: выражение слева от "->Show" должно указывать на тип класса, структуры или объединения либо на универсальный тип 1> тип: 'unknown-type' 1> Form2.cpp 1>c:\users\сергей\documents\visual studio 2010\projects\f\f\Form2.h(92): error C2039: Set: не является членом "System::Windows::Forms::Form" 1> c:\program files\reference assemblies\microsoft\framework\.netframe work\v4.0\system.windows.forms.dll: см. объявление "System::Windows::Forms::Form"
0
|
Комп_Оратор)
![]() ![]() |
|||||||||||
22.02.2013, 15:40 | |||||||||||
Как сделать так, чтобы разные файлы могли видеть друг друга? Ошибки при вызове форм - Syntax error Как добавить кнопки на вторую форму? И сделайте всё сначала. Вы повторяете те же ошибки. Например namespace testApp это пространство моего проекта, а Вам нужно Ваше f если я понимаю верно. Хотя оно может быть любое, но Ваше, myLab2 например. И ещё дескриптор form1, в этом случае я бы присвоил так:
![]() Не по теме: darya17, в этой теме всё уже произошло. Почему бы не общаться в своей теме. Ведь это трудновато читать другим будет. ;)
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||
22.02.2013, 16:02 | |||||||||||
Если кроме Листбокса во второй форме ничего не нужно тогда так ( и метод Set не нужен )
Form1.h
1
|
Комп_Оратор)
![]() ![]() |
|
22.02.2013, 16:05 | |
0
|
22.02.2013, 16:05 | ||||||
Помогаю со студенческими работами здесь
20
Запуск второго консольного окна из первого
Как обратиться к элементам ArrayList? Выходной поток первого числа, второго , суммы первого и второго чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
|
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели.
Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
|
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка:
«Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
|
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
|
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
|
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
|
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
|
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
|
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
|
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
|