Le formatage du texte en WinForm Étiquette
Est-il possible de formater un texte dans une WinForm Étiquette au lieu de briser le texte en plusieurs étiquettes? Veuillez ignorer les balises HTML dans le texte de l'étiquette; il n'est utilisé que pour obtenir mon point de sortir.
Par exemple:
Dim myLabel As New Label
myLabel.Text = "This is <b>bold</b> text. This is <i>italicized</i> text."
Qui produirait le texte dans l'étiquette, comme:
C'est gras texte. C'est
en italique texte.
- Bryan, si vous avez utilisé #2 ou #3 de Danny réponse, avez-vous l'esprit de partage de code ou un lien vers ce que vous avez utilisé? Je vous remercie.
- Je crois que j'ai juste fini à l'aide de #1, mais j'ai peut-être utilisé #3. Je n'ai pas accès à la base de code plus donc je ne peux pas donner un exemple. Désolé.
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas possible avec un WinForms étiquette telle qu'elle est. L'étiquette doit comporter qu'une seule police, avec exactement la même taille et le même visage. Vous avez deux options:
Pas vraiment, mais on pouvait faire semblant avec une lecture seule RichTextBox sans frontières. RichTextBox prend en charge Rich Text Format (rtf).
Une autre solution, la fin de la partie: si vous ne voulez pas faire appel à une tierce partie de contrôle, et vous êtes tout simplement à la recherche d'appeler l'attention sur une partie du texte de votre étiquette, et vous êtes ok avec souligne, vous pouvez utiliser un LinkLabel.
Remarque que beaucoup considèrent cela comme un 'la convivialité de la criminalité', mais si vous n'êtes pas concevoir quelque chose pour l'utilisateur final de la consommation, alors il peut être quelque chose que vous êtes prêt à avoir sur la conscience.
L'astuce consiste à ajouter des handicapés des liens vers les parties de votre texte que vous souhaitez souligné, puis définir globalement le lien de couleurs pour correspondre au reste de l'étiquette. Vous pouvez régler presque toutes les propriétés nécessaires au moment de la conception en dehors de la
Links.Add()
pièce, mais ici, ils sont dans le code:Résultat:
Travaillé pour moi, la solution - l'aide personnalisée RichEditBox. Avec de bonnes propriétés, il sera regardé comme une simple étiquette avec l'appui audacieux.
1) tout d'Abord, ajouter votre personnalisé RichTextLabel classe handicapés curseur :
2) Split vous de la phrase de mots avec IsSelected drapeau, que de déterminer si ce mot doit être en gras ou non :
3) Ajouter une fonction pour convertir des vous texte valide rtf (avec support de l'unicode!) :
Fonctionne comme un charme pour moi!
Solutions compilé à partir de :
Comment convertir une chaîne de caractères au format RTF en C#?
Format texte dans la Zone de Texte enrichi
Comment masquer le curseur dans un RichTextBox?
Dans le Form1_load ne
myRtfControl.Rtf = Resource1.MyRtfControlText
AutoRichLabel
J'ai été la résolution de ce problème par la construction d'un
UserControl
qui contient unTransparentRichTextBox
qui est en lecture seule. LeTransparentRichTextBox
est unRichTextBox
qui permet d'être transparent:TransparentRichTextBox.cs:
La finale
UserControl
agit comme un wrapper de laTransparentRichTextBox
. Malheureusement, j'ai dû limiter àAutoSize
sur mon propre chemin, parce que lesAutoSize
de laRichTextBox
se sont rompus.AutoRichLabel.le concepteur.cs:
AutoRichLabel.cs:
La syntaxe du format de texte enrichi est assez simple:
Paragraphe:
Gras /Italique /Souligné texte:
Autre couleur à l'aide de la table des couleurs:
Mais s'il vous plaît note: Toujours enrouler chaque texte dans un paragraphe. Aussi, les différentes balises peuvent être empilés (c'est à dire
\pard\b\i Bold and Italic\i0\b0\par
) et le caractère d'espace derrière une balise est ignoré. Donc, si vous avez besoin d'un espace derrière elle, insérer deux espaces (c'est à dire\pard The word \bBOLD\0 is bold.\par
). Pour échapper à\
ou{
ou}
, veuillez utiliser l'un des principaux\
.Pour plus d'informations il y a un spécification complète de l'rich text format en ligne.
À l'aide de cette syntaxe plutôt simple, vous pouvez produire quelque chose comme vous pouvez le voir dans la première image. Le contenu de texte enrichi, qui était attachée à la
RtfContent
propriété de monAutoRichLabel
dans la première image a été:Si vous souhaitez activer le renvoi automatique à la ligne, veuillez régler la largeur maximale à la taille désirée. Toutefois, cela permettra de fixer la largeur de la largeur maximale, même lorsque le texte est plus court.
Amusez-vous!
Il y a un excellent article de 2009 sur le Projet de Code nommé"Un Professionnel de Convertisseur HTML, Vous allez Utiliser", qui met en œuvre quelque chose de semblable à ce que l'affiche originale veut.
Je l'utilise avec succès dans plusieurs projets de nous.
Solution très simple:
Maintenant la LabelB va varier en fonction de la longueur de texte de LabelA.
C'est tout.
Je serais également intéressé à trouver si c'est possible.
Où nous ne pouvions pas trouver une solution, nous avons eu recours à la Composante de Ceux SuperLabel de contrôle qui permet à des balises HTML dans une étiquette.
Cette réalisation est une vieille question, ma réponse est plus pour ceux qui, comme moi, qui reste peut-être à la recherche de ces solutions et de tomber sur cette question.
En dehors de ce qui a déjà été mentionné, DevExpress de LabelControl est un label qui prend en charge ce comportement - démo ici. Hélas, elle est partie à une bibliothèque.
Si vous êtes à la recherche de solutions libres, je crois Convertisseur HTML est la meilleure chose suivante.
Un FlowLayoutPanel fonctionne bien pour votre problème. Si vous ajoutez des étiquettes pour le panneau de débit et le format de chaque étiquette de la police et de la marge des propriétés, alors vous pouvez avoir différents styles de police. Jolie solution rapide et facile à faire fonctionner.
Ouais.
Vous pouvez met en œuvre, à l'aide de Rendu HTML.
Pour vous voir, cliquez sur le lien: https://htmlrenderer.codeplex.com/
J'espère que cela est utile.