Ich habe einige Ereignisse, die ich selbst erstellt habe und fragte mich, wie ich sie anheben kann, wenn ich will.Benutzerdefinierte Ereignisse in C# WinForms anheben
Wahrscheinlich ist mein Anwendungsdesign auch durcheinander, könnte einen Blick darauf werfen, wenn Sie möchten.
Dies ist die Struktur
ProgramContext
- Form MainWindow
+ Control TextBox
+ Control Button
+ ...
In diesem Fall hält die MainWindow.TextBox
einige Informationen, die zur Laufzeit ziemlich oft aktualisiert wird. Also, ich brauche es irgendwie zu aktualisieren, wenn ich will (so kann es seine Daten aus der Datenbank neu laden, wo es gespeichert ist)
Ich habe versucht, ein EventHandler
zu seinem Validating
-Event, aber das schien nicht um den Trick zu machen. So
, im Grunde habe ich eine Methode, die die Daten in ProgramContext
DataTable table = _adapter.GetData();
foreach (DataRow row in table.Rows)
{
MainWindow.TextBox.Text += table.Text.ToString();
}
nachlädt, die getan werden muss, wenn eine andere Methode (die neuen Daten in table
schreibt) ausgeführt wird.
Irgendwelche Ideen?
In Ihrem Beispiel, anstatt eine neue Delegierten zu erklären, würde es klarer sein, nur die allgemeine Verwendung 'EventHandler' wie in' public event Eventhandler MyEvent' –
Ich habe auch versucht zu 'TextChanged' Einhaken, aber Das wird in einer Endlosschleife enden, da ich den Text im EventHandler ändern möchte. –
Sie können den Text innerhalb des Handlers ändern, aber Sie müssen das Ereignis für die Dauer der Methode entfernen.Sie können das folgendermaßen tun: rufen Sie 'this.TextChanged - = SomeClassName_TextChanged' auf, um das Ereignis für diesen Aufrufer zu deaktivieren, tun Sie etwas in der Methode und rufen Sie' this.TextChanged + = SomeClassName_TextChanged' auf, um das Ereignis erneut zu aktivieren. – Nebula