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 :

Bouton background image ressource


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut Bouton background image ressource
    Bonjour à tous,
    Je souhaite faire un test sur la ressource image BG chargé dans un bouton.
    Cette image change quand j'active la sélection d'une Row d'un datagridview ou à l'édition d'un textbox.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        ' changement à partir du DGV (panier_out)
        Private Sub Filters_View_dgv_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles Filters_View_dgv.CellClick
            If e.RowIndex >= 0 Then
                If e.ColumnIndex = 1 Then
    ' ici changement de la ressource
                    Filters_AddRemove_btn.BackgroundImage = My.Resources.Panier_Out
                End If
            End If
        End Sub
     
        ' Changement lors de l'édition du textbox (panier_in)
        Private Sub Filters_NewFilter_tbx_TextChanged(sender As Object, e As EventArgs) Handles Filters_NewFilter_tbx.TextChanged
    ' changement de la ressource
            Filters_AddRemove_btn.BackgroundImage = My.Resources.Panier_In
        End Sub
    Ce code ci-dessus fonctionne car je vois bien le changement d'image bg du bouton.
    Maintenant, lors du click du boputon, je dois exécuter certaines choses si le bouton image bg est "panier_in" ou "panier_out"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Sub Filters_AddRemove_btn_Click(sender As Object, e As EventArgs) Handles Filters_AddRemove_btn.Click
            MsgBox("panier")
            If Filters_AddRemove_btn.BackgroundImage Is My.Resources.Panier_In Then
                MsgBox("add to panier")
            End If
            If Filters_AddRemove_btn.BackgroundImage Is My.Resources.Panier_Out Then
                MsgBox("out to panier")
            End If
        End Sub
    Je passe bien par cette procédure "click", le 1er msgbox "panier" s'affiche, mais après aucun des 2 autres ne s'affichent. Aucun des 2 If est true !!!
    Pourtant, je vois bien l'image changer, donc je devrais bien passer par un des 2 If à un moment donné, non ?
    pour info, je n'ai pas d'espace de nom racine pour mon projet, mais je pense que cela ne change rien à mon problème.
    Une idée ?
    Patrick

  2. #2
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Il faudrait creuser dans la doc pour voir si ça ne ferait pas une copie de l'image des ressources et que du coup, ce ne serait plus la même (honnêtement, aucune idée).

    Sinon, en "contournement" évident (à moins que tu aies encore d'autres états que ces deux-là), déclare simplement une variable booléenne que tu affectes au moment où tu changes d'image. Plus qu'à tester cette variable sur le clic du bouton.
    Kropernic

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Bonjour Kropernic
    J'ai cherché sur internet et les seules infos trouvées sont celles que j'utilise dans le code de mon précedent post.
    Il y a aussi ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            If Filters_AddRemove_btn.BackgroundImage.Equals(My.Resources.Panier_Out) Then
                ' etc...
            End If
    Mais ça ne fonctionne pas mieux
    Comme tu l'as dis, j'avais déjà switché sur une soluce de boolean, mais j'utilise le .Tag du bg image.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ' Changement lors de l'édition du textbox (panier_in)
        Private Sub Filters_NewFilter_tbx_TextChanged(sender As Object, e As EventArgs) Handles Filters_NewFilter_tbx.TextChanged
            Filters_AddRemove_btn.BackgroundImage.Tag = 1 ' ou 0 en fonction de l'état du bouton (image)
        End Sub
    Là, bien sur, ça fonctionne... mais il faut gérer une 2eme variable alors que juste l'état de My.resource.xxxx suffirai
    Voila.
    Merci.
    Patrick

  4. #4
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ces deux lignes font la même choses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Filters_AddRemove_btn.BackgroundImage Is My.Resources.Panier_In
     
    Filters_AddRemove_btn.BackgroundImage.Equals(My.Resources.Panier_Out)
    En l’occurrence, comme il s'agit d'objets, ces deux lignes vont simplement regarder si ces deux références pointent sur le même objet.
    Or Comme il te retourne False, je crois que ça prouve que quand on attribue une image, il en fait une copie, CQFD.

    (Equals(), utilisé sur un Integer, va par contre vérifier les valeurs)

    Donc pas le choix, Boolean ou Tag. Mais le Tag est mieux, ça évite de créer une variable juste pour ça.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Septembre 2012
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2012
    Messages : 166
    Points : 86
    Points
    86
    Par défaut
    Merci @mactwist69 pour ces informations complémentaires.
    C'est bien ce que je me suis dis, il doit faire une espece de copie qlq part.
    Ceci dit, les images de resources, je les colles dans le même repertoire /resources.
    Puis, dans VB, je crée la ressource en pointant ce même fichier image, déjà dans le rep ressources... je ne sais pas si c'est cela qui le perturbe.
    Merci
    Patrick

  6. #6
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Si tu fais allusion à ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      Filters_AddRemove_btn.BackgroundImage = My.Resources.Panier_Out
    C'est la bonne manière de faire... Ca doit donc être le fonctionnement normal
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

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

Discussions similaires

  1. Bouton et background-image qui ne le remplit pas
    Par cyrano_de_bergerac dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 08/04/2011, 10h32
  2. background-image sur un bouton
    Par annalady dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 18/12/2008, 14h01
  3. background-image et js qui ne fonctionne pas
    Par trialrofr dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/02/2005, 11h45
  4. background-image, l'image ne s'afiche pas
    Par Ashgenesis dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 17/11/2004, 14h38
  5. [div] background image
    Par noOneIsInnocent dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 26/10/2004, 19h36

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