2017-03-20 2 views
0

Ich möchte ein Ereignis mit Parametern aus einem anderen Ereignis aufrufen, beide haben unterschiedliche Namespaces, ist es passierbar, dies zu tun?Aufrufereignis mit Parametern von einem anderen Ereignis, beide unterschiedliche Namespace

public void event1(object1 sender, eventArgs e1) 
{ 
// code goes here 
} 

public void event2(object2 sender, eventArgs e2) 
{ 
// here I want call event1 with parametersenter code here 
} 

ist es möglich?

+2

Ereignisse können nicht aufgerufen werden, sie können ausgelöst werden, und Ihre Frage enthält nicht annähernd genug Details zu beantworten. Bitte versuche ein [mcve] zu erstellen. –

+1

Bitte klären Sie Ihr spezifisches Problem oder fügen Sie weitere Details hinzu, um genau das hervorzuheben, was Sie benötigen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. Informationen zur Klärung dieser Frage finden Sie auf der [ask] -Seite. – Enigmativity

+0

Das ist kein Event, sondern Event-Handler und es klingt so, als ob man nur Code aus einem anderen Fenster/Formular ausführen möchte. Es gibt Dutzende von Fragen wie diese (z. B. [diese] (http://stackoverflow.com/q/12890754/1997232)). Sie haben den Event-Handler bereits öffentlich gemacht (obwohl es besser ist, eine dedizierte öffentliche Methode zu erstellen, die vom Event-Handler und von einer anderen Klasse aufgerufen wird), jetzt brauchen Sie nur die Instanz des entsprechenden Objekts (das den Event-Handler enthält) entweder übergeben oder über eine * manager * -Klasse (z. B. 'Application.OpenForms' in winforms) erhalten werden. – Sinatr

Antwort

-1

Verwenden von "MyNameSpace"; das ist alles was Sie brauchen. Ich brauche 30 Zeichen zu schreiben, so

"MyNamespace" für C++ enthalten.

Es sei denn ich missverstanden was du meintest.

+0

Erm, seine getaggte C# nicht C++. PS - Ich bin nicht der Downvoter. – Phylyp

+0

Oh gut. Ich weiß, aber ich konnte keine Nachricht unter 30 Zeichen hinterlassen. Mann Ich habe dieses Forum nur ein paar Mal benutzt, aber die Post-Einschränkungen sind wirklich scheiße. Auch die Fettschrift ist automatisch passiert, nachdem ich gepostet habe. – LittleRain

0

Der beste Weg, dies ist nicht in Bezug auf den Ereignissen zu tun genannt werden, sondern nur genannt werden Methoden.

Wenn in der einfachsten Form Ihre Veranstaltungen Method1 gerade angerufen und Method2 jeweils dann könnte man leicht Method1 Anruf Method2 und tun, was es tut.

könnten Sie erhöhen potenziell erhöhen event1 von innen event2 aber es muss nicht unbedingt Sinn, dies zu tun machen (zum Beispiel, wenn es sich um ein Click-Ereignis ist, sollte es nur durch einen Klick erhöht werden. Am besten ist es nur gemeinsame Code Refactoring in eine Methode, die leicht unter Verwendung von Standard-OOP-Techniken aufgerufen werden kann.In meinem Code unten habe ich die extrahierten Methoden statische Methoden, so dass sie leichter von anderen Objekten aufrufen und angenommen, dass Method1 ist in Class1 (nicht explizit angezeigt), die in ist Namespace1. Möglicherweise müssen Sie die Dinge etwas anders machen, wenn Sie sie als nicht statische Methoden benötigen. "

Hier ist das Beispiel, was ich meine.

public void event1(object1 sender, eventArgs e1) 
{ 
    var myParameter = ...; 
    Method1(myParameter); 
} 

public static void Method1(object myParameter) 
{ 
    // code goes here 
} 

public void event2(object2 sender, eventArgs e2) 
{ 
    var myParameter = ...; 
    Method2(myParameter); 
} 

public static void Method2(object myParameter) 
{ 
    Namespace1.Class1.Method1(myParameter); 
} 
Verwandte Themen