2010-06-06 20 views

Respuesta

2

Puede ciertamente crear un documento RTF en el editor RTF (por ejemplo, WordPad), guardar el archivo, abrirlo como un archivo de texto/plano y copiar el documento RTF en la propiedad RtfText de su RichTextBox en el momento del diseño.

Pero desaconsejo. De esta forma, tienes una gran cantidad de datos en tu código y no tiene sentido hacerlo. Usa un recurso, para eso están ahí, después de todo. Puede vincular recursos individuales para controlar propiedades en tiempo de diseño.

7

Agregue una nueva clase a su proyecto y pegue el código que se muestra a continuación. Compilar. Coloque el nuevo control desde la parte superior de la caja de herramientas en su formulario. Seleccione la propiedad RichText y haga clic en el botón con los puntos. Eso iniciará Wordpad. Edite su texto, escriba Ctrl + S y cierre Wordpad. Tenga en cuenta que el diseñador de Visual Studio no funciona cuando Wordpad está abierto.

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

Muy buen ejemplo de cómo ampliar el modelo de diseñador/componente de formularios. –

+0

¡Bravo! Me salvaste el día ... Es una lástima que Visual Studio no ofrezca esa funcionalidad en designtime ... +1 para ti –

+0

Excelente solución, realmente excelente. –

1

He encontrado este enlace en CodeProject a ser muy útil:

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

Es una acumulación de trabajo totalmente el control de edición de RTF alrededor del control RichtTextBox .net estándar con un buen código estructurado. Muestra cómo usar casi todas las funciones disponibles del control.

Sin embargo, está escrito en C# y no en vb.net, pero definitivamente debe echar un vistazo.

0

Bravo - ¡simple y eficiente! Aquí también hay una pequeña corrección, porque el argumento es una cadena larga con espacios, por lo que la siguiente línea contiene las comillas requeridas:

Process.Start("wordpad.exe", """" & fname & """").WaitForExit() 
Cuestiones relacionadas