Liaison tardive de sender en VB.NET

Résolu
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 8 août 2010 à 22:13
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 - 9 août 2010 à 11:32
Bonsoir,

En VB.NET comment résoudre le problème de liaison tardive avec sender ?

Donc en mettant Option Strict On, j'ai des liaisons tardives avec sender dont je ne sais pas comment me débrouiller avec. Par exemple avec (extrait) :

Private Sub ChoixCarte_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _
    C141.Click, C131.Click

Dim NC As String = sender.text.ToString ' Nom de la carte

....

End Sub


Je n'ai rien trouvé sur les forums avec google... Si vous avez une piste ?

Amicalement,
Us.

7 réponses

Profil bloqué
8 août 2010 à 22:36
Une piste pas certaine si tes contrôles sont des Textbox

Comme sender est un Object, pour utiliser la propriété 'Text', on est obligé de caster (convertir) l'élément sender en TextBox avant d'utiliser la propriété 'Text'.
Dim NC As String = CType(sender, TextBox).Text

voir cette URL : http://plasserre.developpez.com/cours/vb-net/ et cherchez cette rubrique :

VIII-J-6. Comment remplacer les groupes de contrôles de VB6 qui n'existent plus en VB.Net?
VIII-J-6-a. Évènement commun
VIII-J-6-b. Comment travailler sur plusieurs contrôles ? <----- ICI

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
9 août 2010 à 08:57
Juste pour quelques précisions en plus :

Pour la conversion préférer DirectCast, légerement plus rapide que CType sur les objets (2x plus rapide sur les Types), par contre, il 'caste' mais ne converti pas un type vers un autre (mais dans ton cas pas besoin).

Pour filtrer dans le cas de types de contrôles différents tu peux utiliser TypeOf au conditionnel.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
9 août 2010 à 09:57
Pour la conversion préférer DirectCast,


Justement, pour ne pas faire de conversion, préférer DirectCast.
CType et autres CInt, .... convertissent un objet en un autre objet de type voulu.

Ici, sender, n'a pas besoin d'être converti car il est déjà du type voulu, bien qu'il soit déclarer de type générique Object.
Il suffit donc de le caster (avec DirectCast) pour dire au système de prendre l'objet existant en tant que TextBox (par exemple) et non pas en tant que Object.

DirectCast est plus rapide, car il n'y a justement pas de conversion de faite.



[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
3
Profil bloqué
8 août 2010 à 22:38
Salut us_30
Excuse-moi dans le message précédent j'ai oublié de te dire bonjour

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
8 août 2010 à 23:24
Re, Galain,

Merci, c'est exactement ce qu'il me fallait. J'ai plus de liaison tardive, seulement l'heure ...

Pas de problème pour la salutation... Je souhaite une bonne soirée, et te renouvelle mes remerciements.

Amicalement,
Us.
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
9 août 2010 à 10:48
Bonjour à tous,

CType ou DirectCast font donc mon affaire. Les deux solutions fonctionnent parfaitement. J'ai remplacé Ctype par DirectCast même si à cette endroit du programme la rapidité n'est pas un enjeu...

Je vous remercie Mayzz, Casy pour ces précisions supplémentaires.

Amicalement,
Us.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
9 août 2010 à 11:32
"Pour la conversion préférer DirectCast"

Justement, pour ne pas faire de conversion, préférer DirectCast.


Effectivement, je n'ai pas été très claire, désolé.

Merci casy


DirectCast est plus rapide, car il n'y a justement pas de conversion de faite.


Bien entendu, mais il n'est pas exclu d'utiliser CType pour passer d'un objet générique à un type sous-jacent hérité, cela fonctionne aussi coté code (comme le dit us au dessus), ce n'est juste pas très aproprié. D'ou ma précision.



Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
Rejoignez-nous