Liaison tardive de sender en VB.NET [Résolu]

us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 8 août 2010 à 22:13 - Dernière réponse : Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention
- 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.
Afficher la suite 

7 réponses

Répondre au sujet
cs_Galain 1270 Messages postés mardi 11 novembre 2003Date d'inscription 24 juillet 2013 Dernière intervention - 8 août 2010 à 22:36
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Galain
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 9 août 2010 à 08:57
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Mayzz
cs_casy 7745 Messages postés mercredi 1 septembre 2004Date d'inscription 24 septembre 2014 Dernière intervention - 9 août 2010 à 09:57
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_casy
cs_Galain 1270 Messages postés mardi 11 novembre 2003Date d'inscription 24 juillet 2013 Dernière intervention - 8 août 2010 à 22:38
0
Utile
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
Commenter la réponse de cs_Galain
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 8 août 2010 à 23:24
0
Utile
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.
Commenter la réponse de us_30
us_30 2117 Messages postés lundi 11 avril 2005Date d'inscription 14 mars 2016 Dernière intervention - 9 août 2010 à 10:48
0
Utile
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.
Commenter la réponse de us_30
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 9 août 2010 à 11:32
0
Utile
"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.
Commenter la réponse de Mayzz

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.