2017-06-19 2 views
0

Je veux déclencher un événement dans une autre classe. Et mon problème est que je ne sais pas comment le faire.un événement de contrôle dans une autre classe

Je suis en train d'utiliser la déclaration Inherits à mon formulaire et ajouter mon nom de classe, et il fonctionne comme je l'espère:

Public Class Frm_Main_Copy 

    Inherits ToolStripMenuApp 
    'I have a ToolStripMenu that has declared before on my class and it sounds like this: 
    'Public Shared WithEvents Cat000x86_64App As ToolStripMenuItem 
    ... 
    Private Sub IsClicked(ByVal sender As Object, ByVal e As EventArgs) Handles Cat000x86_64App.Click 

    End Sub 

End Class 

mais la forme de design foiré (renvoie une erreur fatale) et Je devrais supprimer la déclaration Inherits, et les autres.

essayé d'agir en tant que script sous forme de concepteur (Essayer de mettre ce code à ma classe):

Friend WithEvents BlahBlah As RadioButton 'For example 

Il n'a pas travaillé,

Déclarant une variable pour ma classe et il n'a pas a travaillé trop

recherche Internet et il semble probable plus compliqué que ce que je pensais ...

Tout le monde peut aider? Toute aide est appréciée.

Répondre

0

Une forme est pas une forme à moins qu'il hérite, directement ou indirectement, la classe Form. Vous ne pouvez pas hériter d'un type qui n'est pas lui-même un formulaire et attendez que votre type soit un formulaire. Avec ce code, si ToolStripMenuApp n'est pas une forme alors Frm_Main_Copy n'est pas une forme non plus, donc pas de concepteur de formulaire.

Si ce que vous êtes en train de dire est que vous avez une instance de ce ToolStripMenuApp qui contient un TooStripMenuItem dont l'événement Click vous voulez gérer dans Frm_Main_Copy alors la première étape est de ne pas déclarer Cat000x86_64App comme Shared. Frm_Main_Copy doit déclarer une méthode capable de gérer cet événement:

Private Sub IsClicked(ByVal sender As Object, ByVal e As EventArgs) 
    '... 
End Sub 

Notez qu'il n'y a pas de clause Handles parce qu'il n'y a pas de variable WithEvents dans cette classe dont l'événement vous gérez. Ensuite, Frm_Main_Copy doit avoir accès à l'instance appropriée de ToolStripMenuApp. Il est impossible pour nous de dire la meilleure façon de le faire sur la base des informations fournies, mais il pourrait être aussi simple que cela:

Dim tsma As New ToolStripMenuApp 

Vous pouvez ensuite enregistrer votre méthode en tant que gestionnaire pour l'événement approprié:

AddHandler tsma.Cat000x86_64App.Click, AddressOf IsClicked 

Si vous utilisez AddHandler, assurez-vous d'utiliser RemoveHandler lorsque vous avez terminé avec soit l'objet. Je suggère que vous fassiez une lecture basée sur cette information.

+1

En fait, 'Frm_Main_Copy' est un formulaire qui a une forme de concepteur. Votre réponse est utile ... – Karuntos