0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
|
||||||||||||||||
1 | ||||||||||||||||
Как из второго окна обратиться к элементам первого?05.03.2012, 17:39. Показов 16040. Ответов 32
Метки нет (Все метки)
Здравствуйте!
Изучаю VS C++. Создал проект Windows Forms в среде CLR. Есть два окна, второе (Form_insert) вызывается из первого(Form1). Из первого окна я спокойно управляю элементами во втором. А из второго окна обратиться к элементам первого не могу Так вызываю второе окно
или так:
0
|
05.03.2012, 17:39 | |
Ответы с готовыми решениями:
32
Массив. Элементы второго кратны 3 элементам первого массива Элементы первого массива прибавить к элементам второго и образовать третий Как из первого класса достучаться до объекта второго, а из второго до метода первого? Запуск второго консольного окна из первого |
74 / 54 / 12
Регистрация: 20.02.2012
Сообщений: 239
|
|
05.03.2012, 17:41 | 2 |
dopton, а вы сослались на модуль первой формы? То есть использовали типа #include "Form_insert.h".
0
|
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
|
||||||
05.03.2012, 21:05 [ТС] | 3 | |||||
В модуле первой формы я ссылаюсь на вторую. Со второй на первую не ссылаюсь, иначе компилятор в заголовочном файле первой формы не понимает класс 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 | 4 | ||||||||||||||||||||||||||||||||||||||||
Сообщение было отмечено как решение
Решение
Объявите в 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
|
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 22
|
|
07.03.2012, 22:33 [ТС] | 5 |
Спасибо, заработало! Воспользовался "правильным" вариантом
0
|
5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
|
|
29.03.2012, 13:03 | 6 |
IGPIGP,
скажите как можно объявить переменные во 2 офрме
0
|
5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
|
|
29.03.2012, 15:32 | 8 |
у меня есть Form1 в ней ессть кнопка открывающая Form2
когда я пишу допустим int a в Form1 то ошибок нет и все нормально работает а если я пишу в Form2 int b то появляется ошибка переопределения Error LNK2005 есле в Form1 удалить #include "Form2.h" то ошибок не будет но Form2 не откроется
0
|
Комп_Оратор)
|
|
29.03.2012, 15:52 | 9 |
Значит в Form1 уже объявлена int b. Два раза объявлять одно и тоже имя компилятор не разрешает и это нормально. Вы же сами вставили Form2 в Form1, по-этому не используйте её имён для объявлений в Form2. В ссылке, что я предложил есть всё, что бы передавать данные между формами, но способов как это делать ещё много. Попробуйте объяснить кратко, что Вы не поняли.
0
|
5 / 5 / 0
Регистрация: 27.03.2012
Сообщений: 21
|
|
29.03.2012, 15:58 | 10 |
переменная объявленна только в Form2
0
|
Комп_Оратор)
|
|
29.03.2012, 16:10 | 11 |
Чудес не бывает - наберите просто b в Form1 и посмотрите где она определена (наведите курсор -> правая кнопка -> Go to deffinition) Совет: не используйте имен типа a, b, c, x кроме локальных. Имя не занимает памяти по-этому лучше:
int myBolshoyBizonKotoriyGivetZaBugrom=0; если уже нет выхода можно локализовать конфликтующее имя в своём пространстве имён, но у Вас похоже не тот случай.
0
|
4 / 4 / 0
Регистрация: 08.11.2011
Сообщений: 137
|
|
16.05.2012, 00:17 | 12 |
0
|
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
|
||||||||||||||||
22.02.2013, 10:30 | 13 | |||||||||||||||
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 | 14 |
darya17, Вы сделали иначе. Прочтите всё внимательно. Начните всё с пустой формы и сделайте как написано. Дело тут не в сообразительности, а в относительной сложности, для человека который это делает впервые.
1. В Main не нужно подключать 2 формы. Туда подключается главная, стартовая Form1 (обычно). 2. Во второй форме Вы ничего не подключили. Подключить это вставить в начало файла директивой #include "Form1.h". Иначе имя Form1 в файле Form2.h -ничего компилятору не говорит. Об этом он и горюет. Итак сосредоточьтесь, начните сначала и сделайте всё пошагово. Особенно внимательно вычитайте диалоги о ошибках предшественников. Я часто даю ссылки на эти темы потому, что подобные ошибки это вечные грабли для новичков.
0
|
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
|
|
22.02.2013, 14:09 | 15 |
IGPIGP,
перед самим кодом я написала к Form2.h подключила Form1.h. создала пустую форму как Вы и сказали, но к сожалению та же ошибка.
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||
22.02.2013, 14:23 | 16 | ||||||||||
darya17, ошибка здесь
не Form1 , а просто Form - это вам не С# Это не правильно
0
|
0 / 0 / 0
Регистрация: 18.02.2013
Сообщений: 16
|
||||||||||||||||
22.02.2013, 15:08 | 17 | |||||||||||||||
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\.netframework\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\.netframework\v4.0\system.windows.forms.dll: см. объявление "System::Windows::Forms::Form"
0
|
Комп_Оратор)
|
|||||||||||
22.02.2013, 15:40 | 18 | ||||||||||
Как сделать так, чтобы разные файлы могли видеть друг друга? Ошибки при вызове форм - Syntax error Как добавить кнопки на вторую форму? И сделайте всё сначала. Вы повторяете те же ошибки. Например namespace testApp это пространство моего проекта, а Вам нужно Ваше f если я понимаю верно. Хотя оно может быть любое, но Ваше, myLab2 например. И ещё дескриптор form1, в этом случае я бы присвоил так:
Не по теме: darya17, в этой теме всё уже произошло. Почему бы не общаться в своей теме. Ведь это трудновато читать другим будет. ;)
0
|
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
|
|||||||||||
22.02.2013, 16:02 | 19 | ||||||||||
Если кроме Листбокса во второй форме ничего не нужно тогда так ( и метод Set не нужен )
Form1.h
1
|
Комп_Оратор)
|
|
22.02.2013, 16:05 | 20 |
0
|
22.02.2013, 16:05 | |
22.02.2013, 16:05 | |
Помогаю со студенческими работами здесь
20
Найти хендл второго (а не первого) окна по заданному классу Составить 3-й массив, каждый элемент которого будет равен четным элементам первого массива и нечетным второго массива Как обратиться к элементам ArrayList? Выходной поток первого числа, второго , суммы первого и второго чисел Как обратиться к элементам формы по имени? Как обратиться к отмеченным элементам ListView Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Это работает. Скорость асинхронной логики велика. Вопрос видимо останется в стабильности. Плата - огонь!
Hrethgir 13.01.2025
По прошлому проекту в Logisim Evolution прилагаю файл архива проекта Gowin Eda и снимок. Восьмибитный счётчик из сумматора+ генератор сигнала согласования+ стартер fast регистров. Файлы прилагаю. . . .
|
UserScript для подсветки кнопок языков программирования в зависимости от текущего раздела
volvo 13.01.2025
В результате работы этого скрипта подсвечиваются нужные кнопки не только в форме быстрого ответа, но и при редактировании сообщения:
/ / ==UserScript==
/ / @name CF_DefaultLangSelect
/ / . . .
|
Введение в модели и алгоритмы машинного обучения
InfoMaster 12.01.2025
Машинное обучение представляет собой одну из наиболее динамично развивающихся областей искусственного интеллекта, которая фокусируется на разработке алгоритмов и методов, позволяющих компьютерам. . .
|
Как на Python создать нейросеть для решения задач
InfoMaster 12.01.2025
В контексте стремительного развития современных технологий особое внимание уделяется таким инструментам, как нейросети. Эти структуры, вдохновленные биологическими нейронными сетями, используются для. . .
|
Как создать нейросеть для генерации картинок на Python
InfoMaster 12.01.2025
Генерация изображений с помощью искусственных нейронных сетей стала одним из наиболее захватывающих направлений в области компьютерного зрения и машинного обучения. В этой статье мы рассмотрим. . .
|
Создание нейросети для генерации текста на Python
InfoMaster 12.01.2025
Нейросети, или искусственные нейронные сети, представляют собой модели машинного обучения, вдохновленные работой человеческого мозга. Они состоят из множества взаимосвязанных узлов, или "нейронов",. . .
|
Как создать нейросеть распознавания изображений на Python
InfoMaster 12.01.2025
Введение в распознавание изображений с помощью нейросетей
Распознавание изображений с помощью нейронных сетей стало одним из самых впечатляющих достижений в области искусственного интеллекта. Эта. . .
|
Основы искуственного интеллекта
InfoMaster 12.01.2025
Искусственный интеллект (ИИ) представляет собой одну из наиболее динамично развивающихся областей современной науки и технологий. В широком смысле под искусственным интеллектом понимается способность. . .
|
Python и нейросети
InfoMaster 12.01.2025
Искусственные нейронные сети стали неотъемлемой частью современных технологий, революционизировав множество областей - от медицинской диагностики до автономных транспортных средств. Python, благодаря. . .
|
Python в машинном обучении
InfoMaster 12.01.2025
Python стал неотъемлемой частью современного машинного обучения, завоевав позицию ведущего языка программирования в этой области. Его популярность обусловлена несколькими ключевыми факторами, которые. . .
|
Создание UI на Python с TKinter
InfoMaster 12.01.2025
TKinter — это одна из наиболее популярных библиотек для создания графических интерфейсов пользователей (GUI) в языке программирования Python. TKinter входит в стандартную библиотеку Python, что. . .
|
HTML5 в разработке мобильных приложений
InfoMaster 12.01.2025
Введение: Обзор роли HTML5 в мобильной разработке
В современном мире мобильных технологий HTML5 стал ключевым инструментом для разработки кроссплатформенных приложений. Эта технология произвела. . .
|