[Mono-list] Little question ...
Jaroslaw Kowalski
jaak@zd.com.pl
Thu, 19 Feb 2004 21:46:02 +0100
I believe that events are there to solve the problem overwriting the
devegate instead of appending a new handler to it.
Events only support add/remove (+=, -=), there's no support for assignment.
All you can do is:
myObject.RightListItemChanged += new EventHandler (myObject_ItemChanged);
myObject.RightListItemChanged -= new EventHandler (myObject_ItemChanged);
With delegates you would be able to:
myObject.RightListItemChanged = new EventHandler (myObject_ItemChanged);
which would overwrite all handlers in the delegate chain.
Jarek
----- Original Message -----
From: "Nick Berardi" <nberardi@zigamorph.com>
To: <mono-list@lists.ximian.com>
Sent: Thursday, February 19, 2004 9:13 PM
Subject: RE: [Mono-list] Little question ...
> Sergio,
>
> Events are more like delegate properties. Such is you can do the
following.
> This is good if you want to encapsulate a child objects event. Such as
how
> I am doing it below. When somebody calls the following:
>
> myObject.RightListItemChanged += new EventHandler (myObject_ItemChanged);
>
> this is what happens underneath in the code. It sets the child objects
> SelectedItemChange to the method that I selected above. Even though it is
> twice removed. In addition it enabled AutoPostBack.
>
> public event EventHandler RightListItemChanged {
> add
> {
> deniedListBox.SelectedIndexChanged += value;
> deniedListBox.AutoPostBack = true;
> }
> remove
> {
> deniedListBox.SelectedIndexChanged -= value;
> deniedListBox.AutoPostBack = false;
> }
> }
>
> -----Original Message-----
> From: mono-list-admin@lists.ximian.com
> [mailto:mono-list-admin@lists.ximian.com] On Behalf Of Sergio Blanco
> Cuaresma
> Sent: Thursday, February 19, 2004 2:56 PM
> To: mono-list@lists.ximian.com
> Subject: Re: [Mono-list] Little question ...
>
> El sáb, 07-02-2004 a las 17:21, Miguel de Icaza escribió:
> > Hey,
> >
> > > Only one little question: What are the main differences between using
> > > "event" keyword or not when creating delegates?
> > >
> > > Example:
> > >
> > > delegate void ProbeDelegate (string msg);
> > >
> > > ProbeDelegate d1;
> > > event ProbeDelegate d2;
> >
> > events can notify more than one function, a delegate only points to a
> > single method.
> >
> > So you can have multiple "listeners".
>
> But, only using delegates you can do:
>
> DelegadoOperacion multiD;
> multiD = new DelegadoOperacion(s.suma);
> multiD += new DelegadoOperacion(s.resta);
>
> And then call multiD which will call more than one method. So what is
> the real difference with events ??
>
> Sergio.
>
> --
>
> [aka Marble]
> Web Personal <> http://www.marblestation.com
> Registered LiNUX user #140941 <> http://counter.li.org/
> Socio #3274 de HispaLinux <> http://www.hispalinux.es
> Miembro de GPL URV <> http://www.gplurv.org
> GnuPG key: 0x0ED2CF9D <> hkp://pgp.escomposlinux.org
>
> _______________________________________________
> Mono-list maillist - Mono-list@lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>