1

DataGridView を印刷しようとしていますが、プリンターは白いページしか印刷しません。フォームに表示されるため、データグリッドビューが空ではないことはわかっています。PrintPreviewDialog でもやってみましたが、白いページも表示されます。コードはこれで、何が間違っているのかわかりません。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Printing;

namespace Prueba
{
    public partial class Form4 : Form
    {
        public Form4()
        {
            InitializeComponent();
        }
        private void imprimirBtn_Click(object sender, EventArgs e)
        {   
            printDocument1.Print();
        }
        private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
            Font printFont = new Font("Arial", 10);
            float topMargin = e.MarginBounds.Top;
            float yPos = 0;
            float linesPerPage = 0;
            int count = 0;
            string texto = "";
            int i = -1;
            DataGridViewRow row;

            linesPerPage = e.MarginBounds.Height / printFont.GetHeight(e.Graphics);

            while (count < linesPerPage && i < this.dataGridView1.Rows.Count)
            {
                row = dataGridView1.Rows[i];
                texto = "";

                foreach (DataGridViewCell celda in row.Cells)
                {
                    texto += "\t" + celda.Value.ToString();
                }
                yPos = topMargin + (count * printFont.GetHeight(e.Graphics));
                e.Graphics.DrawString(texto, printFont, Brushes.Black, 10, yPos);

                count++;
                i++;
                if (i < this.dataGridView1.Rows.Count)
                    e.HasMorePages = true;
                else
                {
                    i = 0;
                }
            }
    }
}
4

1 に答える 1

2

印刷プロセスの EventHandler を追加するのを忘れました。

private void imprimirBtn_Click(object sender, EventArgs e)
    {   
        printDocument1.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage);
        printDocument1.Print();
    }
于 2014-04-15T10:46:58.503 に答える