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

Windows Forms Discussion :

un effet pour faire appataitre ou cacher un controle


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut un effet pour faire appataitre ou cacher un controle
    j'ai une interface (winForm) trop chargée et je vous voudrais la rendre plus lisible en créant des évènements de clic (sur un bouton, une image...) qui permettent de soit cacher un panel soit le faire apparaitre
    utiliser simplement les méthodes show() et hide() donne un résultat pas très élégant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            private void button1_Click(object sender, EventArgs e)
            {
                if (panel1.Visible == true)
                {
                    panel1.Hide();
                    panel2.Location = new Point(21, 50);//panel2 prend la place de panel1
                }
                else
                {
                    panel1.Show();
                    panel2.Location = new Point(21, 170);//panel2 est décalé pour laisser place à panel1
                }
            }
    ce que je souhaite est de créer un effet de glissement

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    salut

    eh, au lieu de faire un hide et un show qui sont un peu "brutal" visuellement, tu peux lancer un timer qui va changer à intervalle régulier et suffisamment court la taille de ton contrôle, comme cela, tu auras un effet plus "sympa"
    (une autre solution, serait de jouer sur l'opacité du contrôle si celui ci est complètement intégré dans une forme)

    The Monz, Toulouse

  3. #3
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    Sinon, il existe des contrôles qui font ce genre de comportement... tu en trouves dans des librairies gratuites en cherchant un peu sur le net, on trouve

    the Monz, Toulouse

  4. #4
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    sinon, tu peux utiliser cela (que je viens de faire en 10 minutes)

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    public class EffectControl
        {
            public Control control;
            public int speed;
            public int Height;
            public bool hide;
        }
     
        public static class Effect
        {                
            public static void Show(Control ctrl, int intervalle, int speed)
            {
                Timer timer = new Timer();
                timer.Tick += new EventHandler(TimerHide);
                timer.Stop();
                timer.Interval = intervalle;
                EffectControl control = new EffectControl();
                control.control = ctrl;
                control.speed = speed;
                control.hide = false;
                control.Height = ctrl.Height;
                timer.Tag = control;
                ctrl.Height = 0;
                ctrl.Show();
                timer.Start();
            }
     
            private static void TimerHide(object sender, EventArgs e)
            {
                EffectControl ctrl = (EffectControl)(((Timer)sender).Tag);
                if (ctrl != null)
                {
                    ctrl.control.Height += ctrl.speed;
                    if (ctrl.hide)
                    {
                        if (ctrl.control.Height <= 0)
                        {
                            ctrl.control.Hide();
                            ctrl.control.Height = ctrl.Height;
                            ((Timer)sender).Stop();
                        }
                    }
                    else
                    {
                        if (ctrl.control.Height >= ctrl.Height)
                        {
                            ctrl.control.Height = ctrl.Height;
                            ((Timer)sender).Stop();
                        }
                    }
                }
            }
     
            public static void Hide(Control ctrl, int intervalle, int speed)
            {
                Timer timer = new Timer();
                timer.Tick += new EventHandler(TimerHide);
                timer.Stop();
                timer.Interval = intervalle;
                EffectControl control = new EffectControl();
                control.control = ctrl;
                control.speed = -speed;
                control.hide = true;
                control.Height = ctrl.Height;
                timer.Tag = control;
                timer.Start();
            }
        }
    et tu fais

    Effect.Hide(tonControl,interval,speed);
    et idem pour le Show()

    Le bazar mémorise la taille du controle donc, t'inquiete, t'auras rien à gérer

    The Monz, Toulouse

  5. #5
    Membre averti
    Inscrit en
    Février 2008
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 20
    Par défaut merci
    mille merci
    ça marche à merveille!!!

  6. #6
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Par défaut
    de rien

    Penses au tag Résolu

    The Monz, Toulouse

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

Discussions similaires

  1. Encadrer une case d'un tableau pour faire l'effet "cellule active" d'un tableur
    Par PONFIA dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 29/04/2014, 09h17
  2. API Java pour faire des effets ?
    Par Tinkite82 dans le forum 2D
    Réponses: 2
    Dernier message: 13/07/2010, 10h00
  3. Recherche plugin pour faire rapidement des effets de flous
    Par jonaszrenard dans le forum Flash
    Réponses: 3
    Dernier message: 28/03/2010, 15h35
  4. Éditeur utilisé pour faire du HTML
    Par mio dans le forum Balisage (X)HTML et validation W3C
    Réponses: 295
    Dernier message: 22/12/2008, 15h21
  5. Réponses: 2
    Dernier message: 11/07/2002, 08h31

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