| 

.NET C# Java Javascript Exception

3
Ich habe einige Klassen, die Ereignisse offenlegen und die ich in VB.NET mit WithEvents und Handles-Klauseln anbinde (siehe hier). Wie nutze ich diese Klassen in C#, das die entsprechenden Anweisungen nicht bietet? Die Klasse selbst liegt in einer eigenständigen Klassenbibliothek vor, kann also per Verweis angebunden werden.
18.07.2013
VbFan 460 1 8
4 Antworten
1
Es gibt leider kein Äquivalent zu WithEvents in VB.NET in C#.
Die Eventhandler müssen in der Klasse deklariert werden.
Ein Beispiel habe hier http://www.xtremedotnettalk.com/showthread.php?t=86209 gefunden.
18.07.2013
edvservice 1,4k 1 6
1
der Link mit dem Beispiel ist ziemlich alt. Das Verdrahten von Events in C# kann man ganz einfach folgendermaßen durchführen:

private System.Windows.Forms.Button cmdOk = new System.Windows.Forms.Button();
//Eventhandler registrieren
cmdOk.Click += cmdOk_Click;
//Eventhandler deregistrieren
cmdOk.Click -= cmdOk_Click;

//Event-Methode
private void cmdOk_Click(object sender, EventArgs e)
{
// Dein Code...
}


Ich habe zwar ein Control als Beispiel genommen, aber die Vorgehensweise ist die gleiche, wenn du Events in einer Bibliothek implementiert hast.

Gruß
Klaus
18.07.2013
luedi 2,2k 1 9
1
Wenn ich von dieser Struktur ausgehen (Dein Link)
Public Class Foo
WithEvents Obj As Bar

Public Class Bar
Public Event EvEvent()

Sub CauseSomeEvent()
RaiseEvent EvEvent()
End Sub
End Class

Sub Eventhandler() Handles Obj.EvEvent
Debug.WriteLine("EventHandler caught event")
End Sub

Public Sub TestEvent()
Obj.CauseSomeEvent()
End Sub
End Class


Dann hilft vielleicht folgender Code:
public class MyFoo
{
public event EventHandler MyFooEvent;

public void DoSomething()
{
// Berechnen
if (MyFooEvent != null)
{
MyFooEvent(this, EventArgs.Empty);
}
}
}


private static void Main()
{
var foo = new Foo();

var myFoo = new MyFoo();

myFoo.MyFooEvent += delegate { foo.Eventhandler(); };

myFoo.DoSomething();

Console.ReadKey();
}
18.07.2013
lbm1305 849 1 8
lbm1305 849 1 8
1
Ihr habt mir sehr geholfen, danke Euch allen!!! Am liebsten würde ich alle Beiträge mit einem Häkchen versehen, geht aber nicht, daher +1 für Euch.
19.07.2013
VbFan 460 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH