Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Как обратиться к объекту другой формы из класса


Автор: TiFFolk 10.3.2008, 00:07
Суть:

Код на С++

Имеется форма Form1,на ней label3. В Form1.h сделал label3 public
Еще в проекте есть еще один файл lex.h, в нем:

Код

#include "stdafx.h"
#include "Form1.h"
using namespace std;

public class lex  {

    public:
        lex()
            {
                Form1 F1 = new Form1;
                F1.label3->Text = this->label3->Text;
            }
};


Надо чтобы конструктор  класса(да и любая другая функция) мог обратиться к лэйблу на форме и изменить его.

Вообщем как-то так) написано,то что осталось после экспериментов после прочтения аналогичной темы про С#  smile 

Выдает различные ошибки как бы я не пробовал,но  чаще всех вот эту:
left of '->Text' must point to class/struct/union/generic type  smile 

Подскажите пожалуйста,как это реализовать на с++ 

Автор: NightmareZ 10.3.2008, 00:30
Цитата(TiFFolk @  10.3.2008,  00:07 Найти цитируемый пост)
Вообщем как-то так)

Как тебе кто-то может дать правильный ответ, если ты не можешь корректно сформировать вопрос?

Автор: TiFFolk 10.3.2008, 15:41
имеется проект. Я создал в нем файл lex.h. Листинг сверху. Также в проекте есть форма Form1 . Вот в файле lex.h описан класс. Надо чтобы конструктор класса изменил текст лэйбла расположенного на форме.

Если сформулировать по другому:
Как обратиться к объекту формы из другого файла?

3 вариант:
Проект содержит два файла:
Form1.h - это файл формы
Lex.h - это дополнительный файл.


Что надо написать в файле Lex.h , чтобы я мог обращаться к объектам описанным в Form1.h  , в частности к кнопкам, текстбоксам и лэйблам?

Вот надеюсь хоть одно из описаний будет понятно)  smile 

Автор: TiFFolk 10.3.2008, 21:13
Вообщем я разобрался.
в главном .cpp файле:
Код

copys=gcnew Form1();
lex m(copys); //передаю указательно на форму в конструктор
Application::Run(copys);


Потом в lex.h

Код


#include "stdafx.h"
#include "Form1.h"


public class lex  {

    public:
        
        lex(TeachGrammar::Form1^ GG1)
            {                    
                GG1->label3->Text="asdasd";                    
            }
};


и  smile  все работает)))  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)