J'ai une application Windows Forms où j'affiche certaines données client dans une étiquette. J'ai défini label.AutoEllipsis = true.
Si le texte est plus long que l'étiquette, il ressemble à ceci:Comment puis-je détecter si un System.Windows.Forms.Label avec AutoEllipsis affiche réellement des ellipses?
Some Text
Some longe... // label.Text is actually "Some longer Text"
// Full text is displayed in a tooltip
qui est ce que je veux.
Mais maintenant je veux savoir si l'étiquette utilise la fonction AutoEllipsis lors de l'exécution. Comment puis-je obtenir cela?
Solution
Grâce à max. Maintenant, j'ai été capable de créer un contrôle qui essayait d'ajuster le texte entier en une ligne. Si quelqu'un est intéressé, voici le code:
Public Class AutosizeLabel
Inherits System.Windows.Forms.Label
Public Overrides Property Text() As String
Get
Return MyBase.Text
End Get
Set(ByVal value As String)
MyBase.Text = value
ResetFontToDefault()
CheckFontsizeToBig()
End Set
End Property
Public Overrides Property Font() As System.Drawing.Font
Get
Return MyBase.Font
End Get
Set(ByVal value As System.Drawing.Font)
MyBase.Font = value
currentFont = value
CheckFontsizeToBig()
End Set
End Property
Private currentFont As Font = Me.Font
Private Sub CheckFontsizeToBig()
If Me.PreferredWidth > Me.Width AndAlso Me.Font.SizeInPoints > 0.25! Then
MyBase.Font = New Font(currentFont.FontFamily, Me.Font.SizeInPoints - 0.25!, currentFont.Style, currentFont.Unit)
CheckFontsizeToBig()
End If
End Sub
Private Sub ResetFontToDefault()
MyBase.Font = currentFont
End Sub
End Class
pourrait avoir besoin d'un réglage fin (faire le pas et la valeur minimale configurable avec des propriétés visibles de créateurs) mais il fonctionne assez bien pour le moment.
pourquoi ne pas vérifier cette propriété lors de l'exécution? – Arseny
@Arseny: La propriété est vraie l'étiquette "peut" utiliser des ellipses si le texte est trop grand. Pour un petit texte, rien n'est changé mais la propriété est toujours vraie. –