Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

VS 2013 C++/CLI -> Windows Form

Ostatnio zmodyfikowano 2015-07-01 13:21
Autor Wiadomość
grzybek
Temat założony przez niniejszego użytkownika
VS 2013 C++/CLI -> Windows Form
» 2015-07-01 08:31:38
Witam,

Mam pytanie odnośnie Visual Studio 2013 C++ gdzie domyślnie nie ma
typowych Windows Forms w CLR. 
Odpaliłem projekt jako CLI i przerobiłem na Windows Forms.
Teraz z głównego pliku .cpp nie potrafię się dostać do np. textBox1,
który zdefiniowany jest MyForm.h.
Może ktoś pomóc ? Podejrzewam, że rozwiązanie jest banalne, ale coś mi nie wychodzi :(

Dodam kawałek kodu z deklaracją Clasy w pliku MyForm.h:
C/C++
namespace ConsoleApplication1 {
   
    using namespace System;
    ....
   
   
    public ref class MyForm
: public System::Windows::Forms::Form
    {
    public:
        MyForm( void )
        {
            InitializeComponent();
            //
            //TODO: Add the constructor code here
            //
        }
       
    public: System::Windows::Forms::TextBox ^ textBox1;
       
        void InitializeComponent( void )
        {
            this->textBox1 =( gcnew System::Windows::Forms::TextBox() );
            this->textBox1->Text = L"test";
            ...
            this->Controls->Add( this->textBox1 );
        }
    }
}

Jak w pliku głównym "dobrać" się do zmiennej textbox1 ?

Pozdrawiam,
grzybek
P-134204
Monika90
» 2015-07-01 11:32:24
C/C++
#include "MyForm.h"

int main()
{
    ConsoleApplication1::MyForm form;
    form.textBox1->Text = L"asdf";
    System::Windows::Forms::Application::Run( % form );
}
chyba, nie znam tego języka.
P-134211
grzybek
Temat założony przez niniejszego użytkownika
» 2015-07-01 12:10:05
Dzięki bardzo, zadziałało !

Jedynie jak używać obiektu "form" np. w funkcjach ?

Nie można zadeklarować takiej zmiennej globalnie: ?
ConsoleApplication1::MyForm form;

 -err : variable witch static storage duration cannot have a ref class type



Pozdrawiam,
grzybek
P-134213
Monika90
» 2015-07-01 13:21:11
Nie używaj zmiennych globalnych. A jeżeli już musisz, to spróbuj tego
C/C++
#include "MyForm.h"

ConsoleApplication1::MyForm ^ form;

int main()
{
    form = gcnew ConsoleApplication1::MyForm;
    form->textBox1->Text = L"asdf"; //teraz form to uchwyt, więc jest -> zamiast .
    System::Windows::Forms::Application::Run( form );
}
I znów nie wiem czy to jest poprawne, bo nie znam tego języka i nie chcę go znać.
P-134217
« 1 »
  Strona 1 z 1