Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > VS'08 C++ CLR


Автор: Arkham 17.5.2012, 05:03
Собственно есть чистый пока проект с одной экранной формой.
На форме есть пара текст/комбо боксов, в которые должны попасть данные, им в свойствах указан Modifier - Public.
Вопрос: Каким образом из главного cpp проекта (допустим из функции main), управлять элементами описанными в Form.h ?

Пытался делать что-то на подобие Form1::comboBox1.addString("foo");
Но получаю ошибку "слева от ".addString" должно представлять класс, структуру или объединение"


Автор: 586 17.5.2012, 06:51
Обычно, инициализацию компонентов в конструкторе формы проводят. Но если уж так нужно, то вот:
Код
#include "stdafx.h"
#include "Form1.h"

using namespace testApp;

[STAThreadAttribute]
int main(array<System::String ^> ^args)
{
    // Enabling Windows XP visual effects before any controls are created
    Application::EnableVisualStyles();
    Application::SetCompatibleTextRenderingDefault(false); 

    Form1 ^f = gcnew Form1();
    f->comboBox1->Items->Add("abcd");

    Application::Run(f);
    return 0;
}

Для доступа к форме нужна ссылка на экземпляр формы. "Form1" - это класс. "f" - экземпляр формы.
Если нужен доступ к форме из другой формы, то есть несколько вариантов получить указатель на форму. Например, путём явной передачи ссылки на форму, или через Application::OpenForms.

Автор: Arkham 17.5.2012, 11:19
Цитата

Обычно, инициализацию компонентов в конструкторе формы проводят


Если бы данные были статическими, я бы так и сделал, но теоретически при каждой загрузке программы, данные будут разными.

Цитата

 "Form1" - это класс.


Ах вот в чём фокус) Всё встало на свои места, держал Form1 за готовый экземпляр)
Спасибо большое)

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