Pointer vers une WinForm (.NET Framework 2) - C++ - Programmation
Marsh Posté le 01-06-2007 à 10:54:25
Petite précision : tout compile bien. C'est seulement à l'exécution que l'exception apparait. ++
Marsh Posté le 25-06-2007 à 22:15:51
utilise les delegates. la classe quelconque crée un event que t'as classe avec la listbox reçoit et lance la fonction qui lié à l''event.
Marsh Posté le 01-06-2007 à 10:52:16
Pointer vers une WinForm (.NET Framework 2)
Bonjour à tous.
Je voudrais manipuler une winform, par exemple une ListBox, dans la classe managée où je l'ai déclarée, mais aussi dans une autre classe quelconque. Tel que:
------------------------------------------------------------
classeA.h
------------------------------------------------------------
public ref class ClasseA : System::Windows::Form
{
...
//declaration
public: int A;
public: System::Windows::Forms::ListBox^ malistboxA;
#pragma region
//parametres et autres générés par le concepteur
malistboxA->Visible=true;
...
#pragma end region
};
------------------------------------------------------------
classeA.cpp
------------------------------------------------------------
Thread^ th = gcnew Thread(ClasseB::ClasseB(this->A ,this->malisteboxA))
------------------------------------------------------------
classeB.h
------------------------------------------------------------
public ref class ClasseB
{
ClasseB::ClasseB(int B, ListBox^ malistboxB);
ClasseB::~ClasseB();
};
------------------------------------------------------------
classeB.cpp
------------------------------------------------------------
ClasseB::ClasseB(int B, ListBox^ malistboxB)
{
malistboxB->Items->Add("COUCOU" );
}
ClasseB::~ClasseB();
------------------------------------------------------------
Tout compile sans problème.
Si je tente une manipulation dans la classe B:
malistboxB->Items->Add("COUCOU" ); (voir ci-dessus)
Je me retrouve avec une exception ObjectNullREference... ou autre
Quelles sont les solutions, sachant que:
- Static ne change rien, ou surtout je ne sais pas comment m'y prendre :-)
- C'est peut-etre voire surement lié au fait que pointer vers un winform (managé) est difficilement faisable.. ?
Voila ! Je ne sais plus comment procéder ! Une idée?
Merci de votre attention.