private void ArchivoImprimir_Click(object sender, EventArgs e) { // Formulario padre FormMDI formPadre = (FormMDI)this.MdiParent; // Formulario hijo activo FormDocumento FormHijo = this; if (FormHijo == null) { return; } // Se supone que durante el diseño se asignó a la propiedad Document // de PrintDialog1 el objeto PrintDocument utilizado para imprimir. // Permitir al usuario elegir el rango de páginas a imprimir. PrintDialog1.AllowSomePages = true; if (PrintDialog1.ShowDialog() == DialogResult.OK) { // Si se pulsó el botón "Aceptar" (OK), entonces imprimir. string texto = FormHijo.rtbText.Text; char[] seps = { '\n', '\r' }; // LF y CR línea = texto.Split(seps); //líneas de texto que hay que imprimir totalLineasImpresas = 0; PrintDocument1.Print(); //invoca a ImprimirDoc_PrintPage } }
private void ArchivoGuardar_Click(object sender, EventArgs e) { // Formulario padre FormMDI formPadre = (FormMDI)this.MdiParent; // Formulario hijo activo FormDocumento FormHijo = this; if (FormHijo == null) { return; } // Si el texto cambió... if (FormHijo.rtbText.Modified) { // Obtener la ruta actual del fichero string ruta = formPadre.etbarestPpal.Text; // Obtener el formato actual del fichero RichTextBoxStreamType formato = RichTextBoxStreamType.PlainText; if (ruta.EndsWith("rtf")) { formato = RichTextBoxStreamType.RichText; } if (FormHijo.Text.StartsWith("Documento")) { // Mostrar el diálogo Guardar SaveFileDialog DlgGuardar = new SaveFileDialog(); DlgGuardar.Filter = "ficheros txt (*.txt)|*.txt|ficheros rtf (*.rtf)|*.rtf"; if (DlgGuardar.ShowDialog() == DialogResult.OK) { // Obtener el nombre del fichero ruta = DlgGuardar.FileName; // Obtener el formato del fichero if (DlgGuardar.FilterIndex == 1) { formato = RichTextBoxStreamType.PlainText; } else if (DlgGuardar.FilterIndex == 2) { formato = RichTextBoxStreamType.RichText; } } } // Guardar el fichero FormHijo.rtbText.SaveFile(ruta, formato); // Mostrar el nombre del fichero en la barra de título FormHijo.Text = ruta.Substring(ruta.LastIndexOf("\\") + 1); // Mostrar la ruta del fichero en la barra de estado formPadre.etbarestPpal.Text = ruta; // Fichero no modificado FormHijo.rtbText.Modified = false; } }
private void PrintDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) { // Formulario padre FormMDI formPadre = (FormMDI)this.MdiParent; // Formulario hijo activo FormDocumento FormHijo = this; // Insertar aquí el código para procesar la página. float lineasPorPag; float pos_Y; float margenIzq = e.MarginBounds.Left; float margenSup = e.MarginBounds.Top; // Calcular el número de líneas por página Font fuente = FormHijo.rtbText.Font; float altoFuente = fuente.GetHeight(e.Graphics); lineasPorPag = e.MarginBounds.Height / altoFuente; // Contador de las líneas impresas en una página int lineasImpresasPorPag = 0; // Imprimir cada una de las líneas while (totalLineasImpresas < línea.Length && lineasImpresasPorPag < lineasPorPag) { pos_Y = margenSup + (lineasImpresasPorPag * altoFuente); e.Graphics.DrawString(línea[totalLineasImpresas], fuente, Brushes.Black, margenIzq, pos_Y, new StringFormat()); lineasImpresasPorPag += 1; totalLineasImpresas += 1; } // Si quedan líneas por imprimir, siguiente página if (totalLineasImpresas < línea.Length) { e.HasMorePages = true; // se invoca de nuevo a ImprimirDoc_PrintPage } else { e.HasMorePages = false; // finaliza la impresión } }