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

C# Discussion :

Cacher bouton après click


Sujet :

C#

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 109
    Points
    109
    Par défaut Cacher bouton après click
    Bonjour,

    Je voudrais savoir comment cacher un bouton après le click.

    Quand j'ai créé ma fonction, l'attribut Visible n'existe pas pour mon bouton. Par contre il a l'attribut Visibility, mais je sais pas ce qu'il prend en param.

    J'ai essayé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void Boutton_Update_Click(object sender, EventArgs e)
            {
                this.Boutton_Update.Visibility = System.Windows.Visibility.Collapsed;
     
            }
    ... mais ça ne cache pas. A noter que je n'ai que Collapsed et Visible comme choix!

    Serait ce parce que c'est pas le bon attribut à changer? Ou devrais-je rafraîchir mon appli (Silverlight) pour qu'il disparaisse ?

    Merci d'avance pour vos idées.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Points : 179
    Points
    179
    Par défaut
    Si tu n'as que Collapsed et Visible, j'imagine donc que tu es sous Silverlight (WPF ajoute Hidden à l'enum)

    Dans Silverlight et WPF, Visible n'existe pas, et a été remplacé par .Visibility

    ceci dit, ce n'est pas normal que ça ne marche pas....
    Peux tu essayer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            private void Boutton_Update_Click(object sender, EventArgs e)
            {
               ((Button)sender).Visibility = System.Windows.Visibility.Collapsed;
     
            }

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 109
    Points
    109
    Par défaut
    Bonjour icareo, et merci pour ton intervention.

    Effectivement je suis sous Silverlight. j'ai essayé ton code, et ça marche toujours pas

    J'ai bien vérifié que c'est bien le bon bouton (Je suis débutant, et généralement ce genre d'erreur est très fréquent quand on l'est). De toute façon j'aurai eu des erreurs de compilation si c'était pas le bon bouton. D'ailleurs c'est le seul que j'ai dans mon appli alors je pense que c'est pas ce qui cause l'erreur...

    Any other guesses?

    Merci d'avance!

    Edit : La fonction générée par Silverlight pour l'évènement click sur le bouton prend en argument un évènement de type System.Windows.RoutedEventArgs et non pas EventArgs. J'ai donc complété cette fonction par ce qu'il y avait dans la mienne,mais ça ne marche toujours pas.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Points : 179
    Points
    179
    Par défaut
    Tu es sûr que l'évènement est bien levé ?

    Vire ta fonction, Boutton_Update_Click, et vois si le code se compile toujours... ou ajoute un breakpoint sur la ligne qui cache le bouton pour voir si le debugger s'arrête dessus.

    Sinon, vire la et ajoute dans le constructeur de ta classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            public MaClasse()
            {
                InitializeComponent();
                this.Boutton_Update.Click+=(s,e)=>{
                      ((Button)s).Visibility=System.Windows.Visibility.Collapsed;
                };
            }
    et execute moi ça.

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 109
    Points
    109
    Par défaut
    Aaaaah, ça devient intéressant...

    Alors, au début j'ai viré ma fonction et j'ai mis la ligne qui cache le bouton dans un autre évènement ==> Et ça marche.

    Ensuite, j'ai mis le code que tu m'as conseillé ==> Et ça marche aussi...


    Mon problème est presque résolu, car au pire j'enrichirai ce code là avec le reste de mes traitements... Mais juste pour une raison de lisibilité, je voudrai bien savoir pourquoi ma fonction marchait pas.

    Merci encore une fois, tu m'as été d'une aide précieuse.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Points : 179
    Points
    179
    Par défaut
    Pas de problème.

    A priori, je dirais que ta fonction ne marchait pas parce qu'elle était bien implémentée, mais jamais appelée.

    Autrement dit, tu n'avais rien dans ton code xaml qui ressemblait à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button x:Name="Boutton_Update" Click="Boutton_Update_Click" />
    Tu devais plutot avoir un truc du genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Button x:Name="Boutton_Update" />

    Et de plus, dans ton code C#, rien ne devait inscrire ta fonction à l'évènement : autrement dit, absence du

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Boutton_Update.Click+= ...
    Que je t'ai fait rajouter.

  7. #7
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 109
    Points
    109
    Par défaut
    Parfait,

    J'ai viré l'appel à la fonction dans l'Xaml, et j'ai modifié cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Bouton_Update.Click += (s, e) => Bouton_Update_Click(s, e);
    Et puis dans ma fonction Bouton_Update_Click, j'ai mis mes traitements. Ca marche NIKEL

    Merci encore une (niéme) fois, excellente journée!

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    135
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 135
    Points : 179
    Points
    179
    Par défaut
    Citation Envoyé par farfouch00 Voir le message
    Parfait,

    J'ai viré l'appel à la fonction dans l'Xaml, et j'ai modifié cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Bouton_Update.Click += (s, e) => Bouton_Update_Click(s, e);
    Pas top, ça... tu ferrais mieux de mettre ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Bouton_Update.Click += Bouton_Update_Click;
    Ta solution crée une fonction anonyme qui appelle ensuite Bouton_Update_Click.

    Bien sur, ça marche, mais ça fait un appel en trop c'est pas une bonne habitude à prendre.

    Donc soit tu inscris une fonction existante en tant que gestionnaire d'évènement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Bouton_Update.Click += Bouton_Update_Click;

    Soit tu définis une fonction anonyme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Bouton_Update.Click +=(s,e)=>{/* faire quelque chose ici */};

  9. #9
    Membre régulier
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2010
    Messages : 152
    Points : 109
    Points
    109
    Par défaut
    A vos ordres

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

Discussions similaires

  1. Désactiver le bouton après click
    Par baggie dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 03/04/2008, 11h02
  2. Cacher un bouton après avoir cliqué dessus
    Par baila dans le forum IHM
    Réponses: 8
    Dernier message: 09/10/2007, 17h29
  3. Confirmation après click d'un bouton qui n'en est pas un
    Par DevloNewb' dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/07/2006, 16h10
  4. Ouvrir nouvelle fenêtre Outlook après click sur bouton
    Par n@n¤u dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 14/06/2006, 17h23
  5. Réponses: 2
    Dernier message: 26/07/2005, 15h35

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