2012-02-28 16 views
1

。データグリッドビューを作成し、印刷ボタンを追加しました。ここに私のコードの印刷ボタンがあります。大規模な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の中でどのように見えるかです。ここで

enter image description here

+0

を試みることができるリンクです。ビットマップを作成すると、datagridviewのサイズは1142 * 633の画面に表示される物理的なサイズになります。私はちょうど物理的な高さの代わりにdatagridviewの全体の高さを取得しようとしているし、ビットマップイメージにそれを渡そうとします。 – MStp

+0

チェックアウトこのStackOverflowの投稿をして、個々のリンクhttp://stackoverflow.com/questions/4530136/how-can-i-print-data-from-a-datagridview-in-c – MethodMan

答えて

0

あなたは問題がデータグリッドビューのサイズでダウンロードされたコードサンプル
How To Print a Data Grid in C# and .NET

+0

上で強調表示されたことを示唆に従ってください彼の方法にはいくつかの欠点があります。最も顕著なのは、BindingSourceの代わりにDataSetから直接印刷しているということです。つまり、データがBinding Sourceでソートされていれば、DataSetの順にデータが印刷されます。第2の欠点は、あなたはそれが無限の画像であり、画像が全くDataSetが実際にそれを持っていないとして印刷され得ることはありません、彼はDataSetを印刷しているので、意味のデータベースから来ていない以上、私のグリッドの非常に右側に見た画像です。私は印刷がC#でとても難しいとは信じられませんが、それは明らかです。しかし、リンクありがとう。 – MStp

関連する問題