2

ドキュメントを印刷する際に苦労してきました.ドキュメントにはヘッダーフッターと本文があり、ボディ(グリッド)はドキュメントごとに異なるサイズです. ドキュメントは、グリッドの行数に応じて、2 つのサイズ (A5、A4) のいずれかになります。

最初は ReportViewer コントロールを使用していましたが、いくつか問題がありました。主に、10 週間の調査の後、ドキュメントのサイズに関係なく 2 つの用紙を印刷することでした。何も意味がありませんでした。

次に、フォームとそのすべてのコンテンツを印刷しようとしましたが(これは簡単ではありませんでした)、再び問題が発生しました。そのうちの1つは画面解像度が異なり、さらに悪いことに、本文に多くの行がある場合、フォームは画面に収まりません。印刷されます。

私の質問は:
word はページのすべてのコンテンツをどのように印刷するのですか? メカニズムは何ですか?画面に表示されていないものを印刷するにはどうすればよいですか?

4

1 に答える 1

1

これがあなたの望むものかどうかはわかりませんが、

あなたがしなければならないことは、印刷したいコントロールのサイズのダミーフォームを作成し、コントロールをダミーフォームに追加してフォームを表示し、コントロールをダミーに印刷することです。

これが私がそれをした方法です:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    //Create bitmap
    Bitmap image = new Bitmap(dataGridView1.Width, dataGridView1.Height);
    //Create form
    Form f = new Form();
    //add datagridview to the form
    f.Controls.Add(dataGridView1);
    //set the size of the form to the size of the datagridview
    f.Size = dataGridView1.Size;
    //draw the datagridview to the bitmap
    dataGridView1.DrawToBitmap(image, new Rectangle(0, 0, dataGridView1.Width, dataGridView1.Height));
    //dispose the form
    f.Dispose();
    //print
    e.Graphics.DrawImage(image, 0, 0);
}

フォームに表示されていない場合でも、これにより dataGridView1 が出力されます。

于 2013-04-15T08:34:45.883 に答える