2010-06-06 14 views

risposta

2

È possibile creare un documento RTF nell'editor RTF (ad es. WordPad), salvare il file, aprirlo come file di testo/semplice e copiare il documento RTF nella proprietà RtfText del proprio RichTextBox in fase di progettazione.

Ma io sconsiglio. In questo modo, hai una grande quantità di dati nel tuo codice e non ha proprio senso farlo. Usa una risorsa, è per questo che sono lì, dopo tutto. È possibile associare le risorse individuali per controllare le proprietà in fase di progettazione.

7

Aggiungi una nuova classe al tuo progetto e incolla il codice mostrato di seguito. Compilare. Rilascia il nuovo controllo dalla parte superiore della cassetta degli strumenti sul modulo. Seleziona la proprietà RichText e fai clic sul pulsante con i punti. Ciò avvierà Wordpad. Modifica il testo, digita Ctrl + S e chiudi Wordpad. Attenzione che il designer di Visual Studio non è funzionale mentre Wordpad è aperto.

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 
+0

Esempio molto interessante di come estendere il modello di progettazione/componente Forms. –

+0

Bravo! Mi hai salvato la giornata ... È un peccato che Visual Studio non offra tale funzionalità in fase di progettazione ... +1 per te –

+0

Ottima soluzione, davvero eccellente. –

1

ho trovato questo link su CodeProject di essere molto utile:

http://www.codeproject.com/KB/miscctrl/richtextboxextended.aspx

Si tratta di un lavoro completamente accumulo controllo RTF di modifica intorno al standard di controllo RichtTextBox NET con un buon codice strutturato. Mostra come utilizzare quasi tutte le funzionalità disponibili del controllo.

Tuttavia, è scritto in C# e non in vb.net ma dovresti assolutamente dare un'occhiata.

0

Bravo - semplice ed efficiente! Qui c'è anche una piccola correzione, perché l'argomento è una stringa lunga con spazi in modo che la riga successiva contenga le virgolette richieste:

Process.Start("wordpad.exe", """" & fname & """").WaitForExit() 
Problemi correlati