。データグリッドビューを作成し、印刷ボタンを追加しました。ここに私のコードの印刷ボタンがあります。大規模なdataGridView /フォームを複数のページに印刷するにはどうすればよいですか?ただ、C#で勝利フォームを使用して
private void toolStripButton1_Click(object sender, EventArgs e)
{
image = new Bitmap(this.dataGridView1.Width, this.dataGridView1.Height);
this.dataGridView1.DrawToBitmap(image, new Rectangle(new Point(), this.dataGridView1.Size));
memStream = new System.IO.MemoryStream();
printPDialog = new PrintPreviewDialog();
try
{
printFont = new Font("Arial", 10);
image.Save(memStream, System.Drawing.Imaging.ImageFormat.Bmp);
image.Save("d:\\Adnan.bmp");
p = new PrintDocument();
p.PrintPage += this.p_PrintPage;
this.printPDialog.Document = p;
printPDialog.Show();
}
catch (System.Runtime.InteropServices.ExternalException ee)
{
}
}
private void p_PrintPage(object sender, PrintPageEventArgs e)
{
float linesPerPage = 0;
float yPos = 0;
int count = 0;
float leftMargin = e.MarginBounds.Left;
float topMargin = e.MarginBounds.Top;
int? line = null;
// Calculate the number of lines per page.
linesPerPage = e.MarginBounds.Height/
printFont.GetHeight(e.Graphics);
e.Graphics.DrawImage(Image.FromStream(memStream), leftMargin, topMargin);
}
private void printPDialog_FormClosed(object sender, FormClosedEventArgs e)
{
image.Dispose();
memStream.Dispose();
}
問題は私のDataGridViewに大きなリストがあります。私はFlowLayoutPanelの中にDataGridViewを持っています。私はFlowLayoutPanelとGridViewを印刷しようとしましたが、いずれの場合でも垂直スクロールバーによってあいまいなデータは印刷されません。オンラインで時間を過ごし、VBのパワーパックを試した後、私は何をすべきか分かりません。ここで
は、データがGridViewの中でどのように見えるかです。ここで
を試みることができるリンクです。ビットマップを作成すると、datagridviewのサイズは1142 * 633の画面に表示される物理的なサイズになります。私はちょうど物理的な高さの代わりにdatagridviewの全体の高さを取得しようとしているし、ビットマップイメージにそれを渡そうとします。 – MStp
チェックアウトこのStackOverflowの投稿をして、個々のリンクhttp://stackoverflow.com/questions/4530136/how-can-i-print-data-from-a-datagridview-in-c – MethodMan