J'ai un système.windows.Forms.Richtextbox que je souhaite utiliser pour afficher quelques instructions à mes utilisateurs d'applications. P>
est-il possible de définir une partie du texte que j'entre au-delà du temps de conception pour être audacieux? P>
ou n'est-ce que je n'ai aucune option mais de le faire au moment de l'exécution? P>
4 Réponses :
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é 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. P> rtftext code> de votre Richtextbox code> au moment de la conception. P>
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
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") code> me.rtfedit1.richtext = RESOURCES.GETSTRING ("RTFEDIT1.RICHTEXTEXT") CODE> Le .Text = ... a été après B> le .Richtext = ... et Suppression B> Toutes les formatage!
J'ai trouvé ce lien sur CodeProject pour être très utile: p>
http://www.codeproject.com/kb/misctrl/richtextboxext.aspx p>
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. P>
Cependant, il est écrit en C # et non vb.net mais vous devriez absolument jeter un coup d'oeil. p>
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: