The event is seen differently from outside the class .. try this. I
think you can only do this for classes that you have control over.


   public class Test
   {
       public event EventHandler Something;

       public void DoSomething()
       {
           if (Something != null)
           {
               Something(this, null);
           }
       }
       public void PrintListenners()
       {
           PrintListenners(Something);
       }

       static void PrintListenners(Delegate del)
       {
           foreach (Delegate d in del.GetInvocationList())
           {
               Console.WriteLine("Method Name: {0}", d.Method);
               Console.WriteLine("Type Name: {0}", d.Target);
           }
       }
   }

   class Program
   {

       static void Main(string[] args)
       {
           Test t = new Test();
           t.Something += new EventHandler(t_Something);
           t.Something += new EventHandler(t_Something2);
           t.PrintListenners();
       }

       static void t_Something2(object sender, EventArgs e)
       {
           Console.Write("Something2");
       }

       static void t_Something(object sender, EventArgs e)
       {
           Console.Write("Something");
       }
   }



Cheers,

Greg

On 2/14/07, Mike Andrews <[EMAIL PROTECTED]> wrote:
Thank you

After some investigation, I cannot seem to get this to work.

I created this method:

   private static void DisplayDelegate(Delegate obj) {
       foreach (Delegate d in obj.GetInvocationList()) {
           Console.WriteLine("Method Name: {0}", d.Method);
           Console.WriteLine("Type Name: {0}", d.Target);
       }
   }

and called the method as such:

DisplayDelegate(cb.CheckedChanged)

where
cb is a System.Web.UI.WebControls.CheckBox

and the compiler tells me:
The event 'System.Web.UI.WebControls.CheckBox.CheckedChanged' can only
appear on the left hand side of += or -=

What might I be doing incorrectly here?
Is what I want to do even possible?

Thanks,
Mike




On 2/14/07, Phil Sayers <[EMAIL PROTECTED]> wrote:
>
> google for GetInvocationList
> that should point you in the right direction
>
>
> -----Original Message-----
> From: Discussion of advanced .NET topics.
> [mailto:[EMAIL PROTECTED] Behalf Of Mike Andrews
> Sent: Wednesday, February 14, 2007 2:52 PM
> To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM
> Subject: [ADVANCED-DOTNET] Determining if an event has been assigned a
> delegate...
>
>
> Guys,
>
> Do any of you know if it's possible to determine if an event for an object
> has been assigned a delegate?
>
> Example:
>
> Dim cb As New CheckBox()
> cb.Name = "MyCheckBox"
> AddHandler(cb.CheckChanged, AddressOf CheckChanged)
>
> ...
>
> Public Sub CheckChanged(Object sender, EventArgs e)
> ...
> End Sub
>
> Is it possible to know if cb.CheckChanged has been assigned a handler or
> not?
>
> Thanks,
> Mike
>
> ===================================
> This list is hosted by DevelopMentor(r)  http://www.develop.com
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com
>
> ===================================
> This list is hosted by DevelopMentor(r)  http://www.develop.com
>
> View archives and manage your subscription(s) at
> http://discuss.develop.com
>

===================================
This list is hosted by DevelopMentor(r)  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com



--
Studying for the Turing test

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to