Imprimir un RICHTEXTBOX sin control de longitud de lnea.
Se puede cargar un RTF en el RichTextBox
Public Class Form1 Dim g_sig_linea As Integer ' debe ser una var. global pues se utiliza en dos subrutinas
Private Sub Button3_Click(ByVal sender As [Link], ByVal e As [Link]) Handles [Link] ' Boton Cargar RTF (Ejemplo estandar de Uso de Cuadro de Dialogo) ' 1.- Crear Componente OpenFileDialog por codigo Dim openfiledialog1 As New [Link] ' 2.- Preparar OpenFileDialog [Link] = [Link]([Link]) 'para mostrar inicialmente "Mis documnetos" [Link] = "Archivos RTF|*.rtf|Todos los archivos|*.*" ' Tipos de archivo que se mostraran [Link] = "rtf" ' extension que se pondra si escribimos un nombre a mano sin extension [Link] = "" ' para que inicialmente aparezca en blanco ' 3.- Utilizar OpenFileDialog If [Link] = [Link] Then [Link]([Link], [Link]) End If ' 4.- Eliminar OpenFileDialog [Link]() End Sub Private Sub Button4_Click(ByVal sender As [Link], ByVal e As [Link]) Handles [Link] ' BOTON IMPRIMIR RTF ( Creando todo desde codigo) Try '1.-Crear componente de Impresion Dim printdocument3 As New [Link] '2.- Crear un manejador del evento (al crear pro codigo un objeto hay que hacer esto a mano) AddHandler [Link], AddressOf imprimiendo_documento '3.- Llamar al metodo print g_sig_linea = 0 ' en esta var. global indicamos la sig. liena a imprimir (0=la primera) [Link]() Catch ex As Exception [Link]("Error al imprimir, posiblemente no haya una impresora preparada") End Try '4.- Comprobar que esta escrita la subrutina 'imprimiendo_documento' End Sub Sub imprimiendo_documento(ByVal sender As [Link], ByVal e As [Link])
'CUANDO DE EJECUTE EL METODO [Link] ocurrira el evento [Link] y se llamara a esta subrutina
'1.- Definir la fuente con la que se imprime (puede ser diferente para cada trozo de texto) Dim fuente As Font = New Font("Arial", [Link]) Dim incremento_de_ypos As Integer = [Link]([Link]) 'determina el alto de cada linea en ([Link]) Dim s As String 'Iremos imprimiendo linea a linea, la linea a imprimir cada vez la metemos en el string s Dim xpos As Integer = [Link] ' para imprimir a la izquierda pegado al margen Dim ypos As Integer = 0 'indica en que posicion vertical imprimiremos, inicialmente arriba=0 Dim n_de_linea_a_imprimir As Integer = g_sig_linea 'Inicialmente tiene el valor de 0 Dim yposfinal As Integer While n_de_linea_a_imprimir <= [Link](0) s = [Link](n_de_linea_a_imprimir) 'Lines es una matriz unidim., en cada linea hay un string ' IMPRIMO [Link](s, fuente, [Link], xpos, ypos) 'nos preparamos para la siguiente linea n_de_linea_a_imprimir = n_de_linea_a_imprimir + 1 ypos = ypos + incremento_de_ypos yposfinal = ypos + incremento_de_ypos If yposfinal >= [Link] Then 'Ya no cabria en la pagina actual, por tanto, llamar a NUEVA PAGINA g_sig_linea = n_de_linea_a_imprimir ' Aqui guardamos la siguiente linea a imprimir [Link] = True ' cuando se pone a true se genera otra vez el evento printpage, Exit Sub End If End While [Link] = False End Sub End Class
Se imprime el contenido del RichTextBox1 leyendo cada una de las lneas (la lnea acaba en un Enter) e imprimindolas una a una No se controla si la lnea es demasiado larga y se sale y queda cortada
RichTextBox1 Button3 Button4 NumericUpDown1