2011-03-19 4 views
1

J'ai créé un RichTextbox, qui produit du texte à partir de variables ainsi que certains formatage de base entrées par l'utilisateur - par exemple:richtextbox Visual Basic - réglage texte spécifique au style de police italique

name = txtname.text 
richtextbox1.text = "Hello my name is " & name & "." 

Ce que je veux faire est mis le texte dans la variable de nom en italique quand il est affiché, comme ceci.

Bonjour mon nom est Bob.

Le meilleur que j'ai pu trouver est de faire avec les gammes de sélection, mais je n'ai pas eu de chance avec ça.

À la votre!

+0

Veuillez clarifier, VB6 ou VB.NET. – GSerg

+0

Ah, excuses. J'utilise Visual Studio 2010, que je crois être .net? – Lwkd

Répondre

1

Essayez ceci:

Me.RichTextBox1.Rtf = "{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} hello my name is \i Bob\i0 \par}" 

Si vous utilisez WordPad pour écrire un exemple de texte, enregistrez-le au format rtf, puis ouvrez le fichier dans le bloc-notes, vous obtiendrez quelque chose pour commencer. Vous pouvez supprimer une partie de ce que Wordpad ajoute (comme le programme qui l'a généré) mais il semble que vous deviez laisser au moins la page de code et au moins une police.

+0

Désolé, nous avons quelques problèmes pour comprendre votre réponse. Recommandez-vous d'exporter la chaîne dans WordPad, en la modifiant en ajoutant la mise en forme en italique puis en la réimportant dans VB afin de l'afficher avec le formatage en italique appliqué? – Lwkd

+0

Tout d'abord, vous devez définir la propriété .Rtf de la zone de texte enrichi au lieu de la propriété .text. –

+0

Je pensais utiliser WordPad plus comme un moyen de découvrir le balisage requis pour RTF. Une fois que vous connaissez le début et la fin requis de la chaîne rtf, et que les italiques commencent et se terminent par \ i et \ i0, vous pouvez créer vos propres chaînes rtf. –

1
Dim BO As New Font("Arial", 12, FontStyle.italic) ' Italic 
    richtextbox1.text = "Hello my name is " 
    richtextbox1.selectionfont = BO 
    richtextbox1.appendtext(name) 

Hope this helps

1

j'ai écrit une petite routine qui fait cela:

Private Sub changeRTF(ByVal strToChange As String, ByRef richTextBox As RichTextBox, ByVal color As Color, Optional ByVal ital As Boolean = False, Optional ByVal bold As Boolean = False, Optional ByVal pointSize As Single = -1) 
    richTextBox.SelectionStart = richTextBox.Find(strToChange, RichTextBoxFinds.MatchCase) 

    If ital And bold Then 
     richTextBox.SelectionFont = New Font(richTextBox.Font, FontStyle.Bold + FontStyle.Italic) 
    Else 
     If ital Then richTextBox.SelectionFont = New Font(richTextBox.Font, FontStyle.Italic) 
     If bold Then richTextBox.SelectionFont = New Font(richTextBox.Font, FontStyle.Bold) 
    End If 

    richTextBox.SelectionColor = color 

    Dim originalFontFamily As FontFamily = richTextBox.SelectionFont.FontFamily 
    Dim originalFontStyle As FontStyle = richTextBox.SelectionFont.Style 

    If pointSize > 0 Then richTextBox.SelectionFont = New Font(originalFontFamily, pointSize, originalFontStyle) 
End Sub 

Alors, vous devez créer votre texte, puis appelez changeRTF("Bob",richtextbox1,color.gold,true).

Le seul problème avec ce code est qu'il trouve actuellement seulement la première existence de la chaîne que vous recherchez. Je l'utilise pour surligner des titres donc ça n'a pas été un problème jusqu'à présent (je ne répète pas les titres).

Questions connexes