Grüss euch,
so - jetzt fällt mir wieder nix ein. Ich habe mir einen eigenen Event Handler gebaut. Hier ein Ausschnitt:
Das funktioniert alles wunderbar. Nur... wenn ich nun diese Klasse static haben will:
... dann wird es schwierig.
Ab dann bekomme ich folgenden Fehler an dieser Stelle:
Weiss jemand von euch Rat?
Ganz nebenbei: Ich versuche nur, diese Klasse statisch zu machen, damit ich eben von allen Headern aus darauf zugreifen kann, denn
geht ja leider nicht.
Singleton?
Wie kann ich in .net eine bereits instantiierte Klasse/Methode in anderen Headern verwenden? Nur #include reicht ja leider nicht.
Noch noch mehr nebenbei. Das brauche ich eigentlich nur (also denke ich mal), da ich im ApplicationContext ein Problem mit Application::Exit() habe. Es werden immer nur Forms dadurch geschlossen, da ich es immer schaffe, aus solch einem Kontext aus Exit() zu rufen (was mir persönlich ein Rätsel ist, denn ich rufe - meiner Meinung nach - aus einem ganz anderen Strang Exit() auf, aber es wird immer nur ein Form geschlossen, die Application läuft weiter und beim nächsten Form->Close gibt's dann ein Problem mit bereits disposed resources *g*). Also will ich das über ein eigenes Exit-Event machen. Application::Exit() abfangen habe ich schon versucht, aber das ändert leider nichts.
Auch interessant ist, dass Exit() aus einem Form aufgerufen (ich setze Application::MainForm auf ein Form) immer die Application beendet. Sogar, wenn MainForm = nullptr ist *g*
Ich habe den Thread hier gelesen, in dem das Abfangen des closing Events half - aber bei mir hilft es nicht.
Also ich hoffe, jemand hier weiss Rat
so - jetzt fällt mir wieder nix ein. Ich habe mir einen eigenen Event Handler gebaut. Hier ein Ausschnitt:
Code:
public ref class MyEvent
{
public:
delegate void MyEventHandler(Object^ Sender, MyEventArgs^ e);
event MyEventHandler^ Event;
void TriggerEvent(String^ MyEventName);
};
void MyEvent::TriggerEvent(String^ EventName)
{
MyEventArgs^ Args = gcnew MyEventArgs(MyEventName);
Event(this, Args);
};
Code:
static ref class MyEvent
{
public:
delegate static void MyEventHandler(Object^ Sender, MyEventArgs^ e);
static event MyEventHandler^ Event;
static void TriggerEvent(String^ MyEventName);
};
Ab dann bekomme ich folgenden Fehler an dieser Stelle:
Code:
Event(this, Args);
Das ist mir ja auch klar, nur weiss ich nicht, durch was ich "this" ersetzen soll. Ich habe wirklich alles versucht.error C2671: 'MyEvent::TriggerEvent': Statische Memberfunktionen haben keinen this-Zeiger
Weiss jemand von euch Rat?
Ganz nebenbei: Ich versuche nur, diese Klasse statisch zu machen, damit ich eben von allen Headern aus darauf zugreifen kann, denn
Code:
extern ref class MyEvent myEvent
Singleton?
Wie kann ich in .net eine bereits instantiierte Klasse/Methode in anderen Headern verwenden? Nur #include reicht ja leider nicht.
Noch noch mehr nebenbei. Das brauche ich eigentlich nur (also denke ich mal), da ich im ApplicationContext ein Problem mit Application::Exit() habe. Es werden immer nur Forms dadurch geschlossen, da ich es immer schaffe, aus solch einem Kontext aus Exit() zu rufen (was mir persönlich ein Rätsel ist, denn ich rufe - meiner Meinung nach - aus einem ganz anderen Strang Exit() auf, aber es wird immer nur ein Form geschlossen, die Application läuft weiter und beim nächsten Form->Close gibt's dann ein Problem mit bereits disposed resources *g*). Also will ich das über ein eigenes Exit-Event machen. Application::Exit() abfangen habe ich schon versucht, aber das ändert leider nichts.
Auch interessant ist, dass Exit() aus einem Form aufgerufen (ich setze Application::MainForm auf ein Form) immer die Application beendet. Sogar, wenn MainForm = nullptr ist *g*
Ich habe den Thread hier gelesen, in dem das Abfangen des closing Events half - aber bei mir hilft es nicht.
Also ich hoffe, jemand hier weiss Rat
