Label défilant

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 849 fois - Téléchargée 31 fois

Contenu du snippet

Gestion automatique d'un label défilant en cas de texte dépassant la zone d'affichage

Source / Exemple :


public partial class LabelDefilant : UserControl
    {
        public string LabelText
        {
            get { return this.label.Text; }
            set
            {
                this.label.Text = value;
            }
        }

        public LabelDefilant()
        {
            InitializeComponent();
            this.Resize += new EventHandler(LabelDefilant_Resize);
            this.label.SizeChanged += new EventHandler(label_SizeChanged);
        }

        void LabelDefilant_Resize(object sender, EventArgs e)
        {
            DefilemenLabel();
        }

        void label_SizeChanged(object sender, EventArgs e)
        {
            DefilemenLabel();
        }

        private int _posLabel = 0;

        public int posLabel
        {
            get { return _posLabel; }
            set
            {
                _posLabel = value;
                this.label.Left = _posLabel;
            }
        }
        private bool sens = true;
        private System.Windows.Forms.Timer _timerLabel;

        public System.Windows.Forms.Timer timerLabel
        {
            get
            {
                if (_timerLabel == null)
                {
                    _timerLabel = new System.Windows.Forms.Timer();
                    _timerLabel.Interval = 100;
                    _timerLabel.Tick += new EventHandler(timerLabel_Tick);

                }
                return _timerLabel;
            }
            set { _timerLabel = value; }
        }

        void timerLabel_Tick(object sender, EventArgs e)
        {
            if (sens)
            {
                this.posLabel -= 2;
                if (this.posLabel + this.label.Width < this.Width)
                    sens = false;

            }
            else
            {
                this.posLabel += 2;
                if (this.posLabel >= 0)
                    sens = true;

            }
        }

        private void DefilemenLabel()
        {
            if (this.label.Width > this.Width)
            {
                this.timerLabel.Start();
            }
            else
            {
                this.timerLabel.Stop();
                this.posLabel = 0;
                this.sens = true;
            }
        }
    }

A voir également

Ajouter un commentaire

Commentaire

sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32 -
c'est tellement plus sympa de mettre une source et une capture...

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.