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 :

faire défiler en boucle un texte dans un label


Sujet :

Windows Forms

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut faire défiler en boucle un texte dans un label
    bonsoir à tous,

    j'aimerais faire défiler un texte dans un label, de droite à gauche.
    j'ai essayé quelque chose, mais ça ne fonctionne pas, alors j'efface tout et je recommence ^^
    avez-vous déjà créé une fonction de ce genre là ?

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    style journal lumineux ?
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    euh je ne vois pas de quoi tu veux parler, mais je te passe un lien vers une page internet où il y a la même chose en javascript (mais moi je le veux en c# lol)

    http://stud1.tuwien.ac.at/~e9125168/javas/jticker.html

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Je vois
    C'est bien ce que j'evoquais !

    Soit tu fait ca lettre par lettre en jouant avec un buffer circulaire dans un string en réassignant chaque fois le text de ton textbox

    Soit tu fignole avec les methode drawstring et l'event paint
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  5. #5
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    j'ai fais une fonction qui résigne les lettres une par une, mais elle ne fonctionne pas des masses.
    voila mon code :

    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
     
    public int nbEspcaes = 105;
    public int nbCaracteres = 0;
    public int exclusionEspace = 0;
    public int exclusionCaractere = 0;
    public string texteDefilant = "";
     
    System.Windows.Forms.Timer clockTexteDefilant = new System.Windows.Forms.Timer();
     
    public void TimerTexteDefilant()
    {
    	try
    	{
    		clockTexteDefilant.Stop();
    		clockTexteDefilant.Interval = 2000;
    		clockTexteDefilant.Start();
    		clockTexteDefilant.Tick += new EventHandler(timerTexteDefilant_Tick);
    	}
    	catch (Exception e)
    	{
    		MessageBox.Show(e.ToString());
    	}
    }
     
    private void timerTexteDefilant_Tick(object sender, EventArgs e)
    {
    	if ((nbEspcaes - (exclusionEspace + 1)) > 0)
    	{
    		exclusionEspace++;
    		for (int i = 0; i < (nbEspcaes - exclusionEspace); i++)
    		{
    			lblTexteDefilant.Text = texteDefilant + " ";
    		}
    		texteDefilant = texteDefilant + MusiqueEnCour.getFichier();
    	}
    	else
    	{
    		exclusionCaractere++;
    		texteDefilant = texteDefilant.Substring(exclusionCaractere, (nbCaracteres - exclusionCaractere));
    		if ((nbCaracteres - exclusionCaractere) == 0)
    		{
    			exclusionEspace = 0;
    			exclusionCaractere = 0;
    		}
    	}
    	lblTexteDefilant.Text = texteDefilant;
    }
     
    // déclenchement sur un bouton ou autre ...
     
    texteDefilant = MusiqueEnCour.getFichier();
    TimerTexteDefilant();
    le problème c'est qu'il n'y a pas de défilement, le texte apparait au bout de plusieurs seconde, et ainsi de suite...

    au final, ça affiche un truc du genre :
    votre_musique.mp3votre_musique.mp3votre_musique.mp3votre_musique.mp3

  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
    Points : 5 195
    Points
    5 195
    Par défaut
    sinon, tu peux faire aussi "assez simple"

    Si tu connais le nombre de caractères que tu peux afficher au max dans ta forme, tu crées une chaine de caractère qui est suffisement longue (en copiant le texte si besoin).. et après, tu as une variable Index qui te donne la position dans ta chaine de caractère...

    Sur le timer, tu fais un truc genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    string textToRender = maChaine.SubString(index,nbCar);
    index++;
    if(index == longueurDeMaChaine) index = 0;
    un truc du genre... et ca devrait le faire correctement
    (dans longueurDe... je mettrais la longueur du texte + 1 pour l'espace qui est ajouter pour séparer deux occurences de ta chaine)
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  7. #7
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 387
    Points : 2 999
    Points
    2 999

  8. #8
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    merci pour le lien.

    quelques précisions!
    pourquoi ai-je mis qu'il fallait 105 espaces ? c'est le nombre d'espaces qu'il faut pour que le titre de la musique n'apparaisse pas dans le label, après j'efface les espace 1 par 1. lorsqu'il n'y a plus d'espace, je grignote les caractères du message 1 par 1...

    voila

    seulement ça ne marche qu'en théorie >_<

  9. #9
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    696
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2007
    Messages : 696
    Points : 222
    Points
    222
    Par défaut
    j'ai grandement simplifié mon code, pour un soucis de clarté et de simplicité.
    le voici :

    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
    public int nbEspcaes = 105;
    public int exclusionCaractere = 0;
    public int nbCaracteres = 0;
    public string texteDefilant = "";
     
    public void TimerTexteDefilant()
    {
    	try
    	{
    		clockTexteDefilant.Stop();
    		clockTexteDefilant.Interval = 100;
    		clockTexteDefilant.Start();
    		clockTexteDefilant.Tick += new EventHandler(timerTexteDefilant_Tick);
    	}
    	catch (Exception e)
    	{
    		MessageBox.Show(e.ToString());
    	}
    }
     
    private void initTexteDefilant()
    {
    	for (int i = 0; i < nbEspcaes; i++)
    	{
    		texteDefilant = texteDefilant + " ";
    	}
    	texteDefilant = texteDefilant + MusiqueEnCour.getFichier();
    	nbCaracteres = texteDefilant.Length;
    }
     
    private void timerTexteDefilant_Tick(object sender, EventArgs e)
            {
                exclusionCaractere++;
                int debut = exclusionCaractere;
                int fin = (nbCaracteres - exclusionCaractere);
                lblTexteDefilant.Text = texteDefilant.Substring(debut, fin);
     
                if (fin == 0)
                {
                    initTexteDefilant();
                }
            }
     
    // fonctions déclenchées sur un bouton Play
    initTexteDefilant();
    TimerTexteDefilant();
    Maintenant ça marche

    merci à tous !

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

Discussions similaires

  1. Faire clignoter une zone de texte dans un formulaire
    Par WITER dans le forum VBA Access
    Réponses: 4
    Dernier message: 07/07/2021, 02h45
  2. [GTK] Comment faire défiler du texte dans un label ou autre container
    Par dupuyyann dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 24/02/2008, 23h25
  3. Faire défiler un texte dans un label
    Par FluidBlow dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/10/2006, 20h32
  4. Faire pivoter une zone de texte dans un état
    Par YLL dans le forum Access
    Réponses: 3
    Dernier message: 20/02/2006, 20h05
  5. Faire defiler Texte dans un label
    Par Techsan dans le forum Composants VCL
    Réponses: 5
    Dernier message: 08/06/2003, 23h29

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