Heben Sie benutzerdefinierte Ereignisse in der C# - WinForms
Habe ich einige Ereignisse, die ich erstellt auf meinem eigenen, und fragte sich, wie Sie zu heben, wenn ich will.
Wahrscheinlich meine Anwendung ist auch die Gestaltung Durcheinander, vielleicht werfen Sie einen Blick auf, dass, wenn Sie möchten.
Dies ist die Struktur
ProgramContext
- Form MainWindow
+ Control TextBox
+ Control Button
+ ...
In diesem Fall, die MainWindow.TextBox
hält einige Informationen, die sehr oft aktualisiert wird, zur Laufzeit. So, ich habe irgendwie es brauchen, um selbst aktualisieren, wenn ich will (es kann also laden Sie Ihre Daten aus der Datenbank, wo es gespeichert ist)
Versuchte ich Einhaken ein EventHandler
seiner Validating
-Event, aber das hat nicht scheinen, um den trick zu tun.
So, im Grunde habe ich eine Methode lädt die Daten in ProgramContext
DataTable table = _adapter.GetData();
foreach (DataRow row in table.Rows)
{
MainWindow.TextBox.Text += table.Text.ToString();
}
Muss immer durchgeführt werden, wenn eine andere Methode (die schreibt neue Daten in table
) ausgeführt wird.
Irgendwelche Ideen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Edit : Es scheint, Ihre Frage ist mehr über das einbinden in ein bestimmtes Ereignis, aber FWIW unten ist wie Feuer benutzerdefinierte Ereignisse im Allgemeinen.
Umgang mit der TextBox Changed Event
Aus, was ich verstehe, Sie möchten eine externe Partei zu überwachen Ereignisse, die von einem Textfeld auf ein Formular, und dann neu zu laden Daten auf ein anderes Formular?
Einen quick-and-dirty wäre, um das Formular-Textfeld public und dann andere könnte sich auf dieses Ereignis subskribieren
ODER, in neueren Versionen von C#:
Indem Sie Ihre eigenen Benutzerdefinierten Ereignisses
Andere, sauberere Weg wäre, um heben Sie ein benutzerdefiniertes Ereignis, - z.B.
MyDataChangedEvent
unten. Dies wird Ihnen erlauben, zu abstrahieren, dass die änderungen kommen aus einer textbox an alle.Man könnte auch einen Blick auf die Ent-Lib Composite Application Block und Smart Client Software Factory - das hat einen sehr flexiblen event-broking /pub-sub-Mechanismus für die Synchronisierung über UI "SmartParts" (Steuerelemente, Formulare, Dialoge etc), die in einer lose gekoppelten Weise.(CAB ist jetzt sehr altmodisch).EventHandler
wie inpublic event EventHandler<YourCustomArgsHere> MyEvent
TextChanged
, aber das endet in einer Endlosschleife, da möchte ich den text ändern, der innerhalb der-Event-Handlerthis.TextChanged -= SomeClassName_TextChanged
zu deaktivieren-Ereignis für diese Anrufer, einige Sachen in der Methode, und rufen Sie dannthis.TextChanged += SomeClassName_TextChanged
zu re-aktivieren der Veranstaltung.