Longueur du texte d'un label [Résolu]

Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Dernière intervention
15 février 2011
- - Dernière réponse : dsigmoun
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Dernière intervention
15 février 2011
- 28 oct. 2009 à 12:48
Bonjour à tous,

J'ai un label qui ne peut contenir qu'une ligne. Il arrive que le texte du label soit plus long que la taille du label.

Je souhaiterai que lorsque la taille du texte dépasse celle du label, que le texte affiché se termine par "..."

Par exemple montext ="J'ai un label qui ne peut contenir qu'une ligne"
Si monlabel ne afficher que "J'ai un label qui ne peut contenir qu'une"

Je voudrai "J'ai un label qui ne peut contenir qu'..."

Merci d'avance pour votre aide
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2859
Date d'inscription
mardi 15 avril 2003
Dernière intervention
26 novembre 2013
3
Merci
Voici une autre solution (pas top non plus) mais celle-ci permet de mesurer la taille du texte par rapport au label, afin de ne pas avoir à la définir à l'avance:


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Resize

Dim Text As String = "La phrase longue contenue par le label"
DotString(Text, Label1)

End Sub

Public Sub DotString(ByVal text As String, ByVal label As Label)

Dim tmp As String = text
Dim g As Graphics = Graphics.FromHwnd(Me.Handle)

While g.MeasureString(tmp, Label1.Font).Width > Label1.Size.Width
tmp = tmp.Substring(0, tmp.Length - 1)
End While

If tmp.Length <> text.Length And tmp.Length > 2 Then
tmp = tmp.Substring(0, tmp.Length - 2) & "..."
End If

label.Text = tmp

End Sub

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Merci Mayzz 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Mayzz
Messages postés
26
Date d'inscription
dimanche 7 décembre 2003
Dernière intervention
20 janvier 2013
0
Merci
Réponse

Dans mon exemple, dix caractéres maxi :

Mon_Label.Text = Mon_Label.Text.Substring(0, 10) & " ..."
Commenter la réponse de pattex62
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Dernière intervention
5 avril 2013
0
Merci
Bonjour,

Tu dois bien, sous vb.net, avoir l'(équivalent de textWidth, non ?
Si ou : sers-t-en !

Ce que tu demandes est sous VB6 un véritable jeu d'enfant, y compris sans utiliser TextWidth, en lui substituant un peu d'astuce (une police à espacement fixe, un label "tremplin" avec l même police que le label d'affichage, sa propriété (du tremplin) lui permettant d'ajuster l'affichage - de quelques lettres, par exemple ===>> calcul de l'espace graphique occupé par une lettre ===>> etc...)
Voilà comment ce jeu de trapèze s'exprimerait sous vb6 :
toto = "abcdefghijklmnopqrst"
  Label2.Caption = "abcdef"
  DoEvents
  l = Label2.Width \ 6
  nb = (Label1.Width - (3 * l)) \ l
  'Stop
  Label1.Caption = Left(toto, nb) & "..."


et ce serait (une fois encore, soyons clairs, pour les plus cossards... les autres n'utiliseraient pas 2 labels, mais un seul et utiliseraient TextWidth ...)
Commenter la réponse de jmf0
Messages postés
134
Date d'inscription
jeudi 31 juillet 2008
Dernière intervention
15 février 2011
0
Merci
Merci Mayzz, c'est exactement ce que je recherchai.
Commenter la réponse de dsigmoun

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.