Ist es unter Umständen möglich, dies zu erreichen?C# -Ereignisse von außerhalb der besitzenden Klasse aufrufen?
Meine aktuellen Umstände sind dies:
public class CustomForm : Form
{
public class CustomGUIElement
{
...
public event MouseEventHandler Click;
// etc, and so forth.
...
}
private List<CustomGUIElement> _elements;
...
public void CustomForm_Click(object sender, MouseEventArgs e)
{
// we might want to call one of the _elements[n].Click in here
// but we can't because we aren't in the same class.
}
}
Mein erster Gedanke eine Funktion ähnlich zu haben war:
internal enum GUIElementHandlers { Click, ... }
internal void CustomGUIElement::CallHandler(GUIElementHandler h, object[] args) {
switch (h) {
case Click:
this.Click(this, (EventArgs)args[0]);
break;
... // etc and so forth
}
}
Es ist ein schrecklich hässlich Flickschusterei, aber es sollte funktionieren ... Es muss eine elegantere Lösung sein? Die .NET-Bibliothek tut dies die ganze Zeit mit Nachrichtenhandlern und aufrufenden Ereignissen in Controls. Hat noch jemand andere/bessere Ideen?
Ich glaube, er hat die Veranstaltung von außerhalb der Event-Klasse angesprochen? –
Sie rufen PerformClick() von außerhalb der Ereignisklasse auf. –
Nein, das ist die Art von Ding, die ich suchen wollte; dh. Aufruf der Veranstaltung von außerhalb der Klasse der Veranstaltung. Ich habe nur gehofft, dass es einen Weg gibt, die Methode zu vermeiden. Ich nehme an, ich gehe mit der internen Lösung, die ich gepostet habe, dieses benutzerdefinierte Formular wird in einer DLL sein, so dass die internen Sachen versteckt werden. –