2009-02-12 10 views

Répondre

8

utilisation AddHandler

par exemple,

AddHandler Obj.Ev_Event, AddressOf EventHandler 

et quand vous voulez vous débarrasser de celui-ci (et vous devriez vous en débarrasser quand vous avez terminé de l'utiliser)

RemoveHandler Obj.Ev_Event, AddressOf EventHandler 

dans votre cas, vous pourriez avoir quelque chose comme

Dim web as New WebBrowser() 
AddHandler web.DocumentCompleted, AddressOf HandleDocumentCompleted 

en supposant que vous avait créé un gestionnaire d'événements appelé HandleDocumentCompleted

en fonction de vos besoins, vous pourriez un Utilisez également le mot clé WithEvents lorsque vous déclarez votre navigateur Web; Voir le documentation.

0

J'ai appris à ce sujet en examinant le code généré par le Concepteur de formulaires. Copiez l'un des exemples à partir de là, et si vous regardez autour de vous, vous pourriez apprendre d'autres choses précieuses sur la configuration des contrôles au moment de l'exécution. En C# est fait avec + =, sur un événement membre d'une classe avec une fonction comme paramètre, mais je n'ai pas VB.net à portée de main pour vérifier moi-même ... désolé.

EDIT: C'est AddHandler comme bien décrit par Daniel L dans sa réponse, et en détail à msdn.

1
  • Vous devrez utiliser AddHandler et RemoveHandler.
  • Si vous ajoutez manuellement un événement via AddHandler, veillez à le supprimer (dans un emplacement approprié) à l'aide de RemoveHandler.
  • Tapez "AddHandler NameOfControl". donnera une liste des événements disponibles via intellisense. Intellisense, documentation, (ou la "liste d'erreurs"), vous donnera également la "signature" du gestionnaire d'événements.

Private Sub WebBrowser1_Navigate(ByVal sender As Object, ByVal e As WebBrowserNavigatedEventArgs) 

End Sub 

Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing 
    RemoveHandler WebBrowser1.Navigated, AddressOf WebBrowser1_Navigate 
End Sub 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    AddHandler WebBrowser1.Navigated, AddressOf WebBrowser1_Navigate   
End Sub 
2

Une alternative à l'utilisation AddHandler est la syntaxe des événements déclaratives dans VB. Pour l'utiliser, vous déclarez le contrôle (en tant que membre privé), en utilisant le mot-clé WithEvents. Ensuite, le mot-clé Handles peut être utilisé sur des méthodes pour gérer les événements appropriés:

Private WithEvents m_WebBrowser As WebBrowser 

Private Sub WebBrowser_Navigate(ByVal sender As Object, ByVal e As WebBrowserNavigatedEventArgs) Handles m_WebBrowser.Navigate 
    MsgBox("Hi there") 
End Sub 

Private Sub SomeActionThatCreatesTheControl() 
    m_WebBrowser = New WebBrowser() 
End Sub 

Il y a principalement deux avantages à cette méthode:

  • Pas besoin de RemoveHandler,
  • Pas besoin de fil tous les gestionnaires d'événements manuellement: ceci est fait automatiquement.
0

Exemple

AddHandler SharedTimer.Tick, AddressOf SharedTimer_Tick

+0

Ajouter des informations plus pertinentes pour soutenir votre réponse au lieu d'un seul doublure .... – bonCodigo

0

J'ai une méthode qui découvre des contrôles et ajoute des gestionnaires dans certaines situations.
'Voici un exemple simplifié.
'Est-il possible de passer dans le gestionnaire lors de l'exécution?

Private Sub Example(byval ph as Placeholder) 
    for each ctrl as control in ph.controls 
    if typeof (ctrl) is textbox then 
     dim cb as checkbox = ctrl 
     AddHandler cb.DataBinding, AddressOf MyHandler 
    end if 
    next 
end sub 

« Je cherche à faire quelque chose comme ça ...

Private Sub Example(byval ph as Placeholder, **byref method as delagate**) 
    for each ctrl as control in ph.controls 
    if typeof (ctrl) is textbox then 
     dim cb as checkbox = ctrl 
     AddHandler cb.DataBinding, **method** 
    end if 
    next 
end sub 

Le problème que je vais avoir est d'appeler la méthode. Cela ne fonctionne pas:

Example(myPlaceholder, addressof MyRuntimeHandler) 
0

Vous pouvez utiliser l'instruction Addhandler pour effectuer ces opérations. Vous pouvez ajouter des gestionnaires d'événements au moment de l'exécution du navigateur Web comme celui-ci

AddHandler WebBrowser1.xEvent, AddressOf WebBrowser1EventHandler

et vous pouvez de la même utiliser RemoveHandler, qui déconnecte un événement à partir d'un gestionnaire d'événements comme celui-ci:

RemoveHandler WebBrowser1.XEvent, AddressOf WebBrowser1EventHandler
Questions connexes