7
votes

Est-il possible de styler du texte dans une richtextbox au moment de la conception?

J'ai un système.windows.Forms.Richtextbox que je souhaite utiliser pour afficher quelques instructions à mes utilisateurs d'applications.

est-il possible de définir une partie du texte que j'entre au-delà du temps de conception pour être audacieux?

ou n'est-ce que je n'ai aucune option mais de le faire au moment de l'exécution?


0 commentaires

4 Réponses :


4
votes

Vous pouvez certainement créer un document RTF dans l'éditeur RTF (par exemple WordPad), enregistrer le fichier, ouvrez-le sous forme de fichier texte / uni et copiez le document RTF dans la propriété rtftext de votre Richtextbox au moment de la conception.

Mais je conseille contre elle. De cette façon, vous avez une grande quantité de données dans votre code et il est tout simplement question de cela. Utilisez une ressource, c'est ce qu'ils sont là pour, après tout. Vous pouvez lier des ressources individuelles pour contrôler les propriétés au moment de la conception.


0 commentaires

10
votes

Ajoutez une nouvelle classe à votre projet et collez le code ci-dessous. Compiler. Déposez la nouvelle commande du haut de la boîte à outils sur votre formulaire. Sélectionnez la propriété Richtext et cliquez sur le bouton avec les points. Cela va commencer le wordpad. Modifiez votre texte, tapez Ctrl + S et Fermer WordPad. Méfiez-vous que le concepteur Visual Studio est non fonctionnel alors que WordPad est ouvert.

Imports System.ComponentModel
Imports System.Drawing.Design
Imports System.IO
Imports System.Diagnostics

Public Class MyRtb
    Inherits RichTextBox

    <Editor(GetType(RtfEditor), GetType(UITypeEditor))> _
    Public Property RichText() As String
        Get
            Return MyBase.Rtf
        End Get
        Set(ByVal value As String)
            MyBase.Rtf = value
        End Set
    End Property

End Class

Friend Class RtfEditor
    Inherits UITypeEditor

    Public Overrides Function GetEditStyle(ByVal context As ITypeDescriptorContext) As UITypeEditorEditStyle
        Return UITypeEditorEditStyle.Modal
    End Function

    Public Overrides Function EditValue(ByVal context As ITypeDescriptorContext, ByVal provider As IServiceProvider, ByVal value As Object) As Object
        Dim fname As String = Path.Combine(Path.GetTempPath, "text.rtf")
        File.WriteAllText(fname, CStr(value))
        Process.Start("wordpad.exe", fname).WaitForExit()
        value = File.ReadAllText(fname)
        File.Delete(fname)
        Return value
    End Function
End Class


5 commentaires

Exemple très cool de la manière d'étendre le modèle de formulaires concepteur / composant.


Bravo! Vous avez sauvé ma journée ... c'est un pitié Visual Studio n'offre pas cette fonctionnalité au designtime ... +1 pour vous


Cela ressemblait à ce que j'étais après. A fonctionné très bien en termes d'obtenir un texte modifié formaté dans la vue design. Cependant, lorsqu'il est compilé et exécuté - il revient au texte de format plain. :( Utilisation de VS2013 Express + .NET 4.5 - Donc, pas sûr que cette solution trop ancienne pour l'instant. Dommage - a tout excité à cette solution!


@stigzler: essayé aujourd'hui sur VS2013 (non express), converti-le sur C # (et modifier WordPad pour WinWork pour que je puisse gérer la hauteur de ligne): fonctionne comme un charme!


Pendant le temps de conception, il fonctionnait bien, mais à l'exécution, je n'ai eu que du texte brut. Solution: dans Initializececomponent () La séquence de deux lignes doit être modifiée en cette séquence: me.rtfedit1.text = ressources.getstring ("rtfedit1.text") me.rtfedit1.richtext = RESOURCES.GETSTRING ("RTFEDIT1.RICHTEXTEXT") Le .Text = ... a été après le .Richtext = ... et Suppression Toutes les formatage!



1
votes

J'ai trouvé ce lien sur CodeProject pour être très utile:

http://www.codeproject.com/kb/misctrl/richtextboxext.aspx

Il s'agit d'une commande de contrôle de montage RTF entièrement opérationnelle autour de la commande standard .NET Richttextbox avec un bon code structuré. Il montre comment utiliser presque toutes les caractéristiques disponibles du contrôle.

Cependant, il est écrit en C # et non vb.net mais vous devriez absolument jeter un coup d'oeil.


0 commentaires

0
votes

bravo - simple et efficace! Voici également une petite correction, car l'argument est long chaîne avec des espaces alors la ligne suivante contient des guillemets requis: xxx


0 commentaires