Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компилятор не видит формы, не могу подключить формы к проекту 
V
    Опции темы
sanek1990
Дата 13.11.2009, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Здравствуйте, я меня возникла следующая проблема, начал изучать С++ по книге Пахомов Б.И. С С++ и VS2008 express edition, так вот споткнулся на таком примере. Необходимо вызвать из главной формы еще две формы, одну в модальном режиме другую в немодальном(обычном) режиме. я все сделал как там написано, но не могу подключить эти две формы к главной.
Автор пишет: "Чтобы формы были видны одна из другой надо в h-файле для главной формы перед  самой первой командой using namespace"
поместить операторы: 
#include "Form2.h"
#include "Form3.h"
"
все делаю так но компилятор не видит формы
user posted image

user posted image

Подскажите пожалуйста, что не так?

Код

#pragma once

namespace Forms1 {

#include "Form2.h"
#include "Form3.h"

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    
    public ref class Form1 : public System::Windows::Forms::Form
    {
    public:
        Form1(void)
        {
            InitializeComponent();
            
        }

    protected:        
        ~Form1()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button3;
    private: System::Windows::Forms::Button^  button1;
    private: System::Windows::Forms::Button^  button2;
    protected: 

    protected: 

    private:
        
        System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code
        
        void InitializeComponent(void)
        {
            this->button3 = (gcnew System::Windows::Forms::Button());
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->button2 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button3
            // 
            this->button3->Location = System::Drawing::Point(12, 12);
            this->button3->Name = L"button3";
            this->button3->Size = System::Drawing::Size(49, 249);
            this->button3->TabIndex = 0;
            this->button3->Text = L"Выход";
            this->button3->UseVisualStyleBackColor = true;
            this->button3->Click += gcnew System::EventHandler(this, &Form1::button3_Click);
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(77, 49);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(203, 49);
            this->button1->TabIndex = 1;
            this->button1->Text = L"Вызов Form2 в модальном режиме";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click_1);
            // 
            // button2
            // 
            this->button2->Location = System::Drawing::Point(77, 167);
            this->button2->Name = L"button2";
            this->button2->Size = System::Drawing::Size(203, 58);
            this->button2->TabIndex = 2;
            this->button2->Text = L"Вызов Form3 в немодальном режиме";
            this->button2->UseVisualStyleBackColor = true;
            this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
            // 
            // Form1
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(292, 273);
            this->Controls->Add(this->button2);
            this->Controls->Add(this->button1);
            this->Controls->Add(this->button3);
            this->Name = L"Form1";
            this->Text = L"Form1";
            this->ResumeLayout(false);

        }
#pragma endregion
    
private: System::Void button1_Click_1(System::Object^  sender, System::EventArgs^  e) {
                //открытие Form2

                 System::Windows::Forms::DialogResult dr;
                 Form2 ^newDlg = gcnew Form2();
m:                 dr = newDlg->ShowDialog();
                 /*Вызывается Form2 в модальном режиме. В dr запоминается значение DialogResult.
                 Когда Form2 закроется, то значение ее свойства DilaogResult будет сравниватся с dr
                 (там перед закрытием формы мы внесем значение ОК в DialogResult:)*/

                 if (dr == System::Windows::Forms::DialogResult::OK)
                     return;
                 else
                 {
                     MessageBox::Show("Ошибка закрытия Form2");
                     goto m;
                 }
             }

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {
                 //Вызов Form3
                 Form3 ^f3 = gcnew Form3();
                 f3->Show();
             }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
         }
private: System::Void button3_Click(System::Object^  sender, System::EventArgs^  e) {
             this->Close();
         }
};
}
Код









Это сообщение отредактировал(а) sanek1990 - 13.11.2009, 09:24
PM MAIL WWW Skype   Вверх
mes
Дата 13.11.2009, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



 вытащите инклуды из неймспейса..
 приведите содержимое файла Form2, мож там у Вас все тоже в неймспейсе лежит..


--------------------
PM MAIL WWW   Вверх
sanek1990
Дата 13.11.2009, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Вытащил инкулды из неймспейса, 

Код

#pragma once

#include "Form2.h"
#include "Form3.h"

namespace Forms1 {

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;


Листинг Form2
 
Код

#pragma once

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Drawing;


namespace Forms {

    public ref class Form2 : public System::Windows::Forms::Form
    {
    public:
        Form2(void)
        {
            InitializeComponent();
            
        }

    protected:
        ~Form2()
        {
            if (components)
            {
                delete components;
            }
        }
    private: System::Windows::Forms::Button^  button1;
    protected: 

    private:
        
        System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

        void InitializeComponent(void)
        {
            this->button1 = (gcnew System::Windows::Forms::Button());
            this->SuspendLayout();
            // 
            // button1
            // 
            this->button1->Location = System::Drawing::Point(94, 96);
            this->button1->Name = L"button1";
            this->button1->Size = System::Drawing::Size(124, 23);
            this->button1->TabIndex = 0;
            this->button1->Text = L"Вызов Form1";
            this->button1->UseVisualStyleBackColor = true;
            this->button1->Click += gcnew System::EventHandler(this, &Form2::button1_Click);
            // 
            // Form2
            // 
            this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
            this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
            this->ClientSize = System::Drawing::Size(292, 273);
            this->Controls->Add(this->button1);
            this->Name = L"Form2";
            this->Text = L"Form2";
            this->ResumeLayout(false);

        }
#pragma endregion
    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
                 this->DialogResult = System::Windows::Forms::DialogResult::OK;
                 this->Close(); // закрытие form2
             }
    };
}

Цитата

мож там у Вас все тоже в неймспейсе лежит..

а сюда надо что то подключать?  просто в книжке ни слова про инклуды в form2 и form3.

PM MAIL WWW Skype   Вверх
bsa
Дата 13.11.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: нет
Всего: 196



sanek1990, твой код к С++ отношения не имеет. Это C++/CLI он же .NET (похожее название - уловка маркетологов). Поэтому вопросы надо размещать в соответствующем разделе.
PM   Вверх
sanek1990
Дата 13.11.2009, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Цитата(bsa @ 13.11.2009,  11:43)
sanek1990, твой код к С++ отношения не имеет. Это C++/CLI он же .NET (похожее название - уловка маркетологов). Поэтому вопросы надо размещать в соответствующем разделе.

Спасибо за подсказку, буду теперь знать! smile 
PM MAIL WWW Skype   Вверх
mes
Дата 13.11.2009, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(sanek1990 @  13.11.2009,  09:35 Найти цитируемый пост)
Листинг Form2
Код

namespace Forms {


тогда
Код

// Form2 ^newDlg = gcnew Form2();
Forms::Form2 ^newDlg = gcnew Forms::Form2();



--------------------
PM MAIL WWW   Вверх
sanek1990
Дата 13.11.2009, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



Цитата(mes @ 13.11.2009,  13:09)
Цитата(sanek1990 @  13.11.2009,  09:35 Найти цитируемый пост)
Листинг Form2
Код

namespace Forms {


тогда
Код

// Form2 ^newDlg = gcnew Form2();
Forms::Form2 ^newDlg = gcnew Forms::Form2();

Спасибо, теперь все заработало. я так понял что надо было обращаться к пространству Forms, чтобы через него вызвать Form2, и затем тоже самое сделать с Form3. Вопрос решен. smile 
PM MAIL WWW Skype   Вверх
mes
Дата 13.11.2009, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(sanek1990 @  13.11.2009,  12:36 Найти цитируемый пост)
я так понял что надо было обращаться к пространству Forms, чтобы через него вызвать Form2

или использовать using для раскрытия пространства..



--------------------
PM MAIL WWW   Вверх
sanek1990
Дата 13.11.2009, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 19.10.2009

Репутация: нет
Всего: нет



да попробовал использовать using, все отлично запустилось))
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0985 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.