Autor Beitrag
Max064
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Mo 06.09.10 08:59 
Hallo,

ich habe eine Klasse selbst erstellt und möchte in meiner Form ein Event Handler ausführen lassen, sobald sich eine Eigenschaft dieser Klasse ändert. Doch wie geht das?

lg Max
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mo 06.09.10 10:17 
Dazu sollte deine Klasse das INotifyPropertyChanged Interface implementieren. Das Beispiel dazu in der MSDN scheint genau das richtige für dich zu sein: msdn.microsoft.com/e...propertychanged.aspx
Max064 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 52



BeitragVerfasst: Mi 08.09.10 09:30 
Ja das INotifyPropertyChanged Interface geht auf jeden Fall schon mal in die richtige Richtung! Danke.

Für mich stellt sich aber momentan folgendes Problem. Die selbst erstellte Klasse, in der das neue Event erstellt wird, erbt aus NotifyPropertyChanged. Leider erbt meine neu erstellte Klasse schon aus AxShockwaveFlashObjects.AxShockwaveFlash. Aus 2 Vaterklassen zu erben ist doch nicht möglich oder?

hier mal der Programmcode soweit:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
public class myAxShockwaveFlash : AxShockwaveFlashObjects.AxShockwaveFlash
{
     public event PropertyChangedEventHandler PropertyChanged;
     private void NotifyPropertyChanged(String info)
     {
          if (PropertyChanged != null)
          {
                PropertyChanged(thisnew PropertyChangedEventArgs(info));
          }
     }
     public bool mouse
     {
       get { return _mouse; }
       set
       {
           if (value != _mouse)
           {
                _mouse = value;
                NotifyPropertyChanged("test");
           }
       }
     } 
}


Danach muss ich doch in meiner Form das Event einfügen:

ausblenden C#-Quelltext
1:
this.axShockwaveFlash2.PropertyChanged += new System.EventHandler(this.flash2_MouseDown); //funzt nicht					


Aber hier beschwert sich der Compiler mit:
Zitat:
Fehler 2 Keine Überladung für "flash2_MouseDown" stimmt mit dem Delegaten "System.EventHandler" überein. C:\Dokumente und Einstellungen\mh12803\Desktop\DisplayControlProjekt_100903 16.00\Software\DisplayControl\GraphicEditorForm.Designer.cs 633 55 DisplayControl


Ich glaube, dass der Event Handler falsch deklariert wird?!
ausblenden C#-Quelltext
1:
2:
3:
private void flash2_MouseDown(object sender, PropertyChangedEventArgs e)
{
}


lg Max
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 08.09.10 10:21 
user profile iconMax064 hat folgendes geschrieben Zum zitierten Posting springen:
Ja das INotifyPropertyChanged Interface geht auf jeden Fall schon mal in die richtige Richtung! Danke.
Solange Datenbindung nicht ins Spiel kommt, sondern du auf eine Änderung einer spezifischen Property im eigenen Code reagieren willst, würde ich trotzdem bei einem entsprechend benannten Event pro Property bleiben. Dann kann man sich auch nicht beim Property-Namen verschreiben.

user profile iconMax064 hat folgendes geschrieben Zum zitierten Posting springen:
Aus 2 Vaterklassen zu erben ist doch nicht möglich oder?
INotifyPropertyChanged ist ein Interface; die werden nicht geerbt, sondern implementiert, und zwar beliebig oft :) .

user profile iconMax064 hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden C#-Quelltext
1:
this.axShockwaveFlash2.PropertyChanged += new PropertyChangedEventHandler(this.flash2_MouseDown);					


Oder auch kurz
ausblenden C#-Quelltext
1:
this.axShockwaveFlash2.PropertyChanged += this.flash2_MouseDown;					

_________________
>λ=