c #: Erstellen Sie ein Ereignis, wenn sich die Feldwerte eines Objekts ändern

7

Hey Leute, gibt es eine Möglichkeit, ein Ereignis zu erstellen, das ausgelöst wird, wenn sich die Attribute / Feldwerte eines Objekts ändern? Zum Beispiel, wenn das Objekt ein Feld namens

hat %Vor%

Und der Benutzer führt eine Aktion aus, die diese Zahl aktualisiert, ein Ereignis würde ausgelöst werden, das alle Textfelder in dem Formular aktualisieren würde, um aktuelle Feldwerte anzuzeigen?

BEARBEITEN: Entschuldigung, für jedes Feld wurden Ja-Eigenschaften erstellt.

    
Sinaesthetic 08.11.2010, 09:02
quelle

4 Antworten

19

Machen Sie es zu einer Eigenschaft und nicht zu einem Feld und implementieren Sie INotifyPropertyChanged in Ihrer Klasse:

%Vor%

Sie können dann explizit auf das Ereignis PropertyChanged hören oder eine Datenbindung verwenden, die es automatisch verarbeitet

    
Thomas Levesque 08.11.2010, 09:07
quelle
2

Sie sollten benutzerdefinierte Getter und Setter (d. h. Eigenschaften) verwenden, um das Ereignis manuell auszulösen. Schau dir diesen Code an, er sollte ziemlich einfach sein:

%Vor%

Unsere Membervariable ist privat definiert, so dass niemand außerhalb des Klassen-Widgets darauf zugreifen kann; Sie sind gezwungen, die Eigenschaft Widget_X zu verwenden, und wenn dies der Fall ist, gibt es zwei Fälle:

  • Sie erhalten die Variable x . Nichts zu tun.
  • Sie setzen die Variable x auf denselben Wert wie zuvor. Nichts zu tun. Wir überprüfen es im Setter.
  • Sie setzen die Variable x und ändern sie. Dort feuern wir das Ereignis ab.

Es ist wichtig zu prüfen, ob Event-Handler registriert sind (das heißt, unser Event ist nicht null), bevor wir das Event überhaupt aufrufen. In anderen Fällen erhalten wir eine Ausnahme.

    
wh1t3cat1k 08.11.2010 09:17
quelle
1

Klingt so, als ob Sie die INotifyPropertyChanged -Schnittstelle ausprobieren sollten. Es funktioniert jedoch nicht für Felder, und Sie müssen es manuell implementieren.

    
Ozzy 08.11.2010 09:06
quelle
0

Wo werden Sie das verwenden?

Wenn Sie dies in einer Client-Anwendung verwenden möchten, dann ist das Implementieren von INotifyPropertyChanged empfohlene Arbeitsweise.

    
Gerrie Schenck 08.11.2010 09:08
quelle

Tags und Links