Identifier un sender avec Option Strict=On [Résolu]

BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention - 28 juin 2012 à 23:01 - Dernière réponse : BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention
- 29 juin 2012 à 13:23
Bonjour à tous,
j'ai activé Option Strict=On dans mon programme histoire de faire un code plus sûre.
Tout c'est bien passé sauf pour les arguments 'Sender'. En effet j'ai l'habitude dans certaines parties du programme de me servir de cet argument pour exécuter du code en fonction du Sender. La dificulté provient du fait que le Sender peut être un object de différents type (un control utilisateur, un menu, ou une DataTable....)
Par exemple :
Private sub Ajouter (sender As System.Object, e As System.EventArgs)
Dim SenderName as string = Sender.name ' Avec Option Strict=On cette ligne ne fonctionne pas.
        Select Case SenderName
            Case MonControl.Name
                ....
            Case MonMenu.Name
                ....
            Case MaDataTable.Name
                ....
        End Select
End Sub


J'ai essayé de remplacer sender.Name par sender.Tostring mais dans le cas des menus ça me retourne la propriété Text du Menu comme par exemple : &Ajouter. C'est pas génial dans la mesure ou si je modifie le libellé du menu ne fonctionne plus.
Je cherche une solution fiable me permettant t’identifier le sender avec Option Strict=On activé.

Je vous remercie beaucoup si vous pouvais m'aider.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
NHenry 14295 Messages postés vendredi 14 mars 2003Date d'inscription 12 novembre 2018 Dernière intervention - 28 juin 2012 à 23:23
3
Merci
Bonjour,

Regardes aussi :
If TypeOf ... Is ... Then

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
Mon site

Merci NHenry 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de NHenry
Meilleure réponse
BasicZx81 140 Messages postés samedi 5 mars 2011Date d'inscription 13 août 2013 Dernière intervention - 29 juin 2012 à 13:23
3
Merci
Merci beaucoup, ça fonctionne.

Dim CtrlName as string
if typeof sender is type1 then
   dim c as type1 = CType(sender, Type1)
   Ctrlname = c.Name
   (...)
elseif typeof sender is unAutreType then
 
(...)
 
end if

Merci BasicZx81 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de BasicZx81
Utilisateur anonyme - 28 juin 2012 à 23:15
0
Merci
Bonsoir,

Jette un coup d'oeil sur les instructions DirectCast, Ctype et TryCast dans ton aide VB.
Commenter la réponse de Utilisateur anonyme
Utilisateur anonyme - 28 juin 2012 à 23:34
0
Merci
Ou aussi sender.GetType.name
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.