2009-05-11 7 views
1

Puis-je déterminer si une fonction a déjà été affectée à un événement?Propriétés de l'événement WebBrowser?

par exemple. (Standard WinForms application avec le contrôle du navigateur Web)

namespace Crawler { 
    public partial class Form1 : Form { 

     WebCrawler.manager m; 

     public Form1() { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) { 
      system.windows.forms.webbrowser wb = new system.windows.forms.webbrowser(); 
      wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(foo); 

      //[... Some other code ...] 

      /* [Begin Example] */ 

      if (wb.DocumentCompleted.Contains(foo){ 

       // Behave Normally 

      }else { 

       // Do Something Else... 

      } 
     } 
    } 
} 

Et, si je peux faire quelque chose comme je l'ai décrit ci-dessus, comment?

Répondre

1

Vous pouvez appeler Deletegate.GetInvocationList.

Voici un exemple:

using System; 
using System.Linq; 

class Program 
{ 
    static event Action foo; 

    static void bar() { } 

    static void Main() 
    { 
     foo += bar; 

     bool contains = foo 
      .GetInvocationList() 
      .Cast<Action>() 
      .Contains(bar); 
    } 
} 
+1

J'utilise maintenant cette ligne: WebBrowser wb; actions = wb.DocumentCompleted.GetInvocationList(). Mais il me donne cette erreur: "L'événement 'System.Windows.Forms.WebBrowser.DocumentCompleted' ne peut apparaître que sur le côté gauche de + = ou - =" – bitcycle

Questions connexes