IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Amelioration d'une portion de code VB


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut Amelioration d'une portion de code VB
    Bonsoir,

    Voici une portion de code vbnet, mais je pense que cela doit etre ameliorable ("If sender Is..." repete 4 fois! Ca marche, mais c'est pas terrible!).
    De plus, le "sender.Image" ne marche pas (pas autorise). Donc, je pourrais verifie s'il ya une image dans chaque IF, mais ca va etre tres lourd.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub pbSelectedBG2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pbSelectedBG2.Click, pbSelectedBG3.Click, pbSelectedBG4.Click, pbSelectedBG5.Click
            If sender.image = Nothing Then Exit Sub
            If sender Is pbSelectedBG2 Then pbCurrentBG.Image = pbSelectedBG2.Image
            If sender Is pbSelectedBG3 Then pbCurrentBG.Image = pbSelectedBG3.Image
            If sender Is pbSelectedBG4 Then pbCurrentBG.Image = pbSelectedBG4.Image
            If sender Is pbSelectedBG5 Then pbCurrentBG.Image = pbSelectedBG5.Image
            SomethingElse()
    End Sub
    Je voudrais donc savoir comment ecrire proprement ce genre de code, si c'est possible.
    Merci,

    A+
    JLuc01

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    as-tu essayé un cast explicite ? Du genre (en C#) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // j'imagine que tes contrôles sont des PictureBox
    pbCurrentBG.Image = ((PictureBox)sender).Image;

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    en vb.net :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    pbCurrentBG.Image = DirectCast(sender, picturebox).Image
    sender est as object pour que tout puisse rentrer dedans, et sur object il n'y a pas .image
    par contre si tu sais que c'est un picturebox (ou autre) tu peux caster, c'est à typer la variable autrement, ce qui te permet de l'utiliser comme ce qu'elle est


    quand plusieurs types peuvent être contenus, on peut utiliser TypeOf pour vérifier ce qu'il y a dans la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if typeof sender is button then
      dim b = directcast(sender, button)
      ' ....

  4. #4
    Membre régulier
    Homme Profil pro
    Scientist
    Inscrit en
    Mai 2013
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Scientist
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2013
    Messages : 110
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Eh, oui! J'aurais du y penser. Je crois avoir deja fait quelquechose comme ca dans le passe.
    J'ai toujours un peu de peine quand j'utilise le "sender" et le "e".

    Bref, j'essaye cela ce soir, et je valide si ca marche.

    A+
    JLuc01

  5. #5
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. tester d'une portion de code
    Par Ashen-Shugar dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 19/04/2008, 13h07
  2. Réponses: 3
    Dernier message: 22/01/2008, 08h58
  3. Executer une portion de code uniquement si le javascript est actif
    Par Rakken dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/04/2007, 10h23
  4. [java.lang.class] Votre avis sur une portion de code
    Par be_tnt dans le forum Langage
    Réponses: 3
    Dernier message: 18/10/2006, 16h55
  5. gestion d'erreur resume next sur une portion de code
    Par aarlock dans le forum Access
    Réponses: 2
    Dernier message: 02/06/2006, 15h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo