| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > Как связать две формы? |
| Автор: 6oTuHok 16.12.2006, 17:19 | ||||||||
| Граждане! Ситуация следующая........ Хочу связать две формы так, чтобы, кликая по кнопке на первой форме появлялась вторая (а первая исчезала), и наоборот, кликая по кнопке на второй, появлялась первая (исходная). Работаю в MS Visual Studio 2005. Создаю новый проект CLR -> Windows Form Application. Далее добавляю новую форму: Project -> Add new item -> UI -> Windows Form. В "Form1.h" подключаю файл "Form2.h"
Аналогично поступаю и с "Form1.h":
В чистом виде компилирует без проблем!!! Создаю кнопку на Form1. И делаю так:
Появляется такая гадость:
Подскажите, перелазил все, что нашел. В МСДН'е толком ниче не написано. |
| Автор: mr.DUDA 17.12.2006, 00:49 |
| (оффтопик) долой С++/CLI !!! граждане, изучайте шарп !!!! (/оффтопик) |
| Автор: 6oTuHok 17.12.2006, 01:43 | ||
Куда перелепливать не придумал;) поэтому просто убрал!
Как видишь, толку маловато. В МСДН написано, что "^" - используется для создания укащатель на весь объект (следовательно, это и надо для его создания). Поэтому думаю, что не в этом дело((( Я так понял, что С# не любит "перекрестные ссылки" на заголовочные файлы! Можно ли это как-то обойти или переделать? |
| Автор: DarkDragon 17.12.2006, 10:34 | ||||
вообщем попробуй так:
если не получится, то обьяви myForm вот так:
сам толком не знаю, упераюсь на C++.NET 2003, ну и на ошибку котораю блестит. |
| Автор: ivashkanet 17.12.2006, 11:48 | ||
| Не имею понятия что есть птица, но она должна быть рядом с типом/классом, а не переменной. Так что меняем так:
DarkDragon, а что у тебя звезда висит сама по себе? Хоть CLI здесь и не пахнет, но в общем ты прав |
| Автор: 6oTuHok 17.12.2006, 13:14 | ||
Поменял, ошибки те же. Ваще я где-та читал, что при создании указателей не важно где стоит * или ^. Практика это пока, что подтверждает |
| Автор: DarkDragon 17.12.2006, 14:20 | ||||
Не а! Звезда или птица может быть где угодно, главное в промежутке от типа до имени переменной, т. е. type * var; type* var; type *var; type * var; все эти обьявления показывают что var это указатель (т. е. Pointer) Ну а вообщем помнится мне что обьявления в C++.NET, делалось так: static System::Windows::Forms::Form __gc* frm = new System::Windows::Forms::Form(); Попробуй так:
Из ошибки видно, что он ругается из за того что переменная обьявленна не как указатель! |
| Автор: 6oTuHok 18.12.2006, 18:57 | ||||||
Это ясно, что если создать указатель типа <что там>::Form будет работать, но мне нужна уже созданная форма, с кнопками и т.п. (в общем разными контролами), а вручную (т.е. программно) прописывать их на чистой форме мне не хочеЦЦа (много писанины и не факт, что получиЦЦа так как надо). Меня еще смущает вот что....... Когда я добавлял форму к уже созданному проекту, в новом заголовочном файле Form2.h было написано так:
хотя в Form1.h написано так:
В РАЗНЫХ МЕСТАХ ПРОПИСАНО ПОДКЛЮЧЕНИЕ ПРОСТРАНСТВА ИМЕН! |
| Автор: DarkDragon 18.12.2006, 20:39 | ||||
| 6oTuHok, я имел ввиду, что бы ты попробовал заместо ^, поставить *. Вот еще одну вещь которую я понять не могу: в Form2.h:
в Form1.h:
тоесть получается: если первым компилится Form1.h, то он вытаскивает Form2.h, он же в свою очередь вытаскивает Form1.h, и тот в свою очередь... Вообщем покругу ходит (бесконечный цикл, или лучше сказать рекурсия выдергивания текста). Попробуй в Form2.h, убрать #include "Form1.h". |
| Автор: 6oTuHok 18.12.2006, 20:56 |
Эту фишку я пробовал! Тогда никак не вызвать первую форму!!! (связи же с ней нету) |
| Автор: ivashkanet 18.12.2006, 21:45 |
| |
| Автор: 6oTuHok 18.12.2006, 23:38 | ||
Погоди, а я не на C# пишу разве??? Чета я ваще запутался!!! Разъясните мне хто-нить в чем разница и на чем я пишу!!! |
| Автор: ivashkanet 19.12.2006, 10:06 |
Нет. У C# нет никаких птиц и звездей Там все намного проще Какой у тебя проект? C# WinForm? или с++ CLI и тд. и т.п. |
| Автор: 6oTuHok 19.12.2006, 22:19 |
Windows Form Application..... Точно!!!!! Надо пересаживаться на C#!!!!! |
| Автор: ivashkanet 19.12.2006, 23:17 |
Это еще только часть ответа Windows Form Application разные бывают Чтобы создать проект для C# нужно сделать так: открываешь язык Visual C#, "вкладка" Windows, иконка Windows Application |
| Автор: DarkDragon 24.12.2006, 22:56 | ||||
Давно проехали, но се же скажууу: ivashkanet, ведь ты о C#, говоришь
Надо та надо. Но потом вернись к C++.NET, т. к. тама есть очь хорошая хитрость |
| Автор: ivashkanet 24.12.2006, 23:10 |
Хотел бы узнать какая, а то у мя к .Net С++ очень плохое отношение Но это |