¡Error "Referencia de objeto no establecida como instancia de un objeto"! (VB.Net)
El control RichTextBox se puede utilizar para ingresar y editar texto. También proporciona capacidades de formato más avanzadas que el control TextBox tradicional.
El control RichTextBox proporciona propiedades que le permiten utilizar diferentes formatos para cualquier parte del texto del control. Con estas propiedades, puede poner el texto en negrita o cursiva, cambiar el color del texto y crear un superíndice o un subíndice. Puede ajustar los valores de sangría izquierda y derecha de un párrafo y también puede utilizar sangrías francesas.
Utilizado
como un cuadro de texto sin fondo, se puede utilizar para escribir aplicaciones que lean archivos de texto particularmente grandes.
Un editor de texto totalmente funcional en cualquier aplicación.
Características
Abre o guarda archivos en formato RTF o formato de texto ASCII. Puede leer y escribir archivos directamente utilizando los métodos del control (LoadFile y SaveFile). También puede utilizar las propiedades de este control (como SelRTF y TextRTF) junto con las declaraciones de entrada y salida de archivos de Visual Basic para leer y escribir archivos.
Contenido cargado. rtf al control RichTextBox, simplemente arrastre el contenido del archivo (por ejemplo, desde el Explorador de Windows 95) directamente al control, o resalte el archivo para usarlo en otras aplicaciones (por ejemplo, Microsoft Word) Arrastre la parte de visualización directamente al control .
Establezca la propiedad FileName para cargar .rtf o . txt en el control.
Utilice el método SelPrint para imprimir todo o parte del texto en el control RichTextBox.
Vincular el control RichTextBox a un control de datos puede manejar campos Memo en bases de datos de Microsoft Access o campos de texto grandes en otras bases de datos (como el tipo de datos TEXTO en el servidor SQL).
En tiempo de ejecución, los objetos incrustados (como mapas de bits, íconos e íconos de aplicaciones) se agregan al control mediante el método Add de la colección OLEObject. Cualquier objeto incrustado se puede arrastrar y soltar en el control en tiempo de diseño o de ejecución, incluidos documentos como hojas de cálculo de Microsoft Excel y documentos de Microsoft Word.
Establecer barras de desplazamiento en tiempo de diseño.
De forma predeterminada, RichTextBox no tiene barras de desplazamiento. En tiempo de ejecución, si se instala un archivo grande en el control, el usuario final no podrá ver todo el contenido del archivo. Para permitir a los usuarios desplazarse fácilmente, la propiedad ScrollBars se puede establecer en 1 (horizontal), 2 (vertical) o 3 (ambas). Esto se debe hacer en tiempo de diseño porque la propiedad ScrollBars es de solo lectura en tiempo de ejecución.
Utilice los métodos LoadFile y SaveFile para abrir y guardar archivos.
Utilizando los métodos LoadFile y SaveFile, puede abrir o guardar fácilmente el archivo RTF del control RichTextBox. Para abrir un archivo, puede utilizar el control CommonDialog para proporcionar el nombre de ruta, de la siguiente manera:
Private subOpenFile()
El nombre del control "RichTextBox" es "rtfData".
CommonDialog se llama "dlgOpenFile".
Declara una variable de cadena para el nombre del archivo.
Muestra el cuadro de diálogo Abrir archivo.
Y establezca la variable en el nombre del archivo.
Dim strOpen como cadena
dlgOpenFile. MostrarOpen
strOpen = dlgOpenFile.
Nombre del archivo
Abra el archivo usando el método LoadFile.
rtfData. Cargar almacenamiento de archivos
Conector final
Guardar archivos es igualmente simple usando el método SaveFile:
Private subSaveFile()
Atenuar strNewFile como cadena
dlgOpenFile. mostrar guardar
strNewFile = dlgOpenFile. Nombre de archivo
rtfData. Guarde el archivo strNewFile
Conector final
Tenga en cuenta que si el archivo contiene codificación RTF que el control no admite, solo el texto relevante no aparecerá en el control RichTextBox.
Establezca las propiedades de fuente usando SelFontName, SelFontSize y SelFontColor.
Para cambiar las características de fuente en el control RichTextBox, puede utilizar las propiedades SelFontName, SelFontSize y SelFontColor.
Los controles ComboBox generalmente se usan para mostrar opciones para estas propiedades. Luego puede cambiar esa propiedad usando el evento Click del control ComboBox. El siguiente código primero llena un control ComboBox llamado "cmbFonts" en el evento Load del objeto Form. Luego use el evento Click para cambiar la propiedad SelFontName del control RichTextBox
Private subform_Load()
Marcar I como un número entero
Usar cmbFonts
Filtro para i = 0. fuente. Cuenta - 1
. Agregar pantalla de proyecto. Fuente(1). Texto
Termina con
Conector final
Sub privado cmbFonts_Click()
rtfData. SelFontName = cmbFonts. Texto
Conectores finales
Puntos clave Estas propiedades afectan sólo al texto seleccionado o, si no hay ningún texto seleccionado, al texto escrito después de la posición actual del cursor.
Dar formato a sangrías de párrafo, sangrías francesas y viñetas.
Otra característica del control RichTextBox es que puede crear párrafos con sangrías, sangrías francesas y viñetas. Los tres estilos son los siguientes:
Sangría y Sangría de viñeta (rtf_3ind.bmp)
Para utilizar las propiedades SelFontName, SelFontSize y SelFontColor, el usuario final debe seleccionar uno o más párrafos. . Aquí se supone que el usuario solo selecciona el segundo párrafo. El código para crear sangría y sangría francesa es el siguiente:
Supongamos que el nombre del control es "rtfData".
rtfData. SelIndent = .5
rtfdata. selhangindent = 1.5
Tenga en cuenta que los valores utilizados para establecer SelIndent, SelHangingIndent, BulletIndent y otras propiedades dependen de la propiedad ScaleMode del contenedor del control RichTextBox. Por ejemplo, si el contenedor del control RichTextBox es un objeto Form, cuando la propiedad ScaleMode del objeto Form cambia de 7 (cm) a 1 (twip), la propiedad SelIndent también debe cambiar de 0,5 (cm) a 283 (twip). ). Esto se debe a que un centímetro = 567 twips.
Tenga en cuenta también que la propiedad SelBullet de un párrafo debe establecerse en Verdadero para poder establecer el párrafo con un estilo de viñeta.
Notificar cambios de propiedades con el evento SelChange
Para anunciar las propiedades actuales de cualquier texto seleccionado por el usuario, puede utilizar el evento SelChange. Este evento ocurre cada vez que cambia el punto de inserción o la selección. El siguiente ejemplo utiliza un control de barra de herramientas para notificar al usuario sobre los cambios en la propiedad SelBold.
Private Sub rtfData_SelChange()
Restablecer el objeto del botón de la barra de herramientas.
Atributo de valor. El nombre del control de la barra de herramientas es
tlbRTF.
SelBold devuelve 0, -1 o Nulo. Si está vacío
Establezca su propiedad MixedState en True.
Seleccione el caso rtfData. Selbold
"Ejemplo 0" no está en negrita.
tlbRTF. botón ("negrita"). Valor = tbrUnpressed
Caso -1 ' está en negrita.
tlbRTF. botón ("negrita"). Valor=Presión
Estado de mezcla de Case Else.
tlbRTF. botón ("negrita"). MixedState = True
Finalizar selección
Finalizar conector
Utilizar el método SelPrint para imprimir el contenido de RichTextBox
Para imprimir el control RichTextBox , puede utilizar el método SelPrint. Este método requiere un parámetro, la propiedad hDC del objeto Impresora utilizado para imprimir el contenido del control RichTextBox. Si el usuario selecciona algún texto, solo se imprime el texto seleccionado. Si no se selecciona ningún texto, se imprime todo el contenido del control.
El siguiente código muestra un cuadro de diálogo de impresora con un control CommonDialog después de que el usuario hace clic en el control CommandButton. La propiedad Flags deshabilita la numeración de páginas y permite al usuario seleccionar varias opciones en este cuadro de diálogo:
Private Sub cmdPrint_Click()
El nombre del control "CommonDialog" es "dlgPrint" .
dlgPrint. flags = cdlPDReturnDC cdlPDNoPageNums
Si rtfData. Entonces SelLength = 0
dlgPrint. Banderas = dlgPrint. Marcar cdlPDAllPages
Otro
dlgPrint. Banderas = dlgPrint. Banderas cdlPDSelection
Termina si...
dlgPrint. Impresora de pantalla
rtfData. SelPrint dlgPrint.hDC
Conector final
Para obtener instrucciones detalladas sobre el uso del control CommonDialog, consulte "Uso del control CommonDialog" en la Guía del programador de Visual Basic.
Mostrar objetos incrustados en controles
En tiempo de ejecución, el usuario final puede arrastrar cualquier objeto incrustado y colocarlo en el control RichTextBox. Se pueden incrustar dos tipos de objetos en los controles: objetos que se muestran como iconos y objetos que se muestran como datos. La siguiente imagen muestra un RichTextBox con un objeto de archivo incrustado como ejemplo del primer tipo.
Al hacer clic, el objeto incrustado inicia la aplicación asociada con el archivo como se esperaba. Cuando los datos del control se guardan como un archivo RTF (utilizando el método SaveFile), también se guarda la información incrustada en el objeto.
Sin embargo, si el usuario final incorpora un mapa de bits en un control, se mostrará el mapa de bits en lugar de su icono, como se muestra a continuación:
Al hacer clic en el mapa de bits se iniciará la aplicación Paint. , lo que hace que los usuarios finales puedan editar mapas de bits.
Utilice el método Add de la colección OLEObjects para agregar objetos incrustados.
Agregue el objeto incrustado al control mediante programación usando el método Add de la colección OLEObject, de la siguiente manera:
Private Sub cmdAddObject_Click()
Ponga el bit de mariposa El gráfico se agrega al control.
RichTextBox1. OLEObjects.Add,,," bfly.bmp"
Conector final
En tiempo de ejecución, puede usar los métodos Agregar, Borrar y Eliminar para completar dinámicamente objetos incrustados en el control. .