コード例 #1
0
ファイル: Form2.cs プロジェクト: diegoogle/ProjectsCSharp
        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
            }
        }
コード例 #2
0
ファイル: Form2.cs プロジェクト: diegoogle/ProjectsCSharp
        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;
            }
        }
コード例 #3
0
ファイル: Form2.cs プロジェクト: diegoogle/ProjectsCSharp
        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
            }
        }