3

次のような列名で、ListView 内のすべての項目を順番に印刷できる必要があります。

開始: (日付) 終了: (日付) シフト: (シフト番号) 販売: (販売)

そして、それは私が必要とするもののために完全に印刷されますが、最初のページ(またはリストビューの最初の12行)のみを印刷します。それをすべて印刷しますが、わかりません。

private void btnPrint_Click(object sender, EventArgs e)
    {

        try
        {
            PrintDialog pd = new PrintDialog();
            PrintDocument MyPrintDocument = new PrintDocument();
            MyPrintDocument.PrintPage += new PrintPageEventHandler(this.PrintPageEvent);
            pd.PrinterSettings.PrintRange = PrintRange.AllPages;
            MyPrintDocument.PrinterSettings.PrintRange = PrintRange.AllPages;
            MyPrintDocument.Print();
        }
}


 private void PrintPageEvent(object sender, PrintPageEventArgs ev)
     {
        string text = null;
        for (int i = 0; i < listView4.Items.Count; i++)
        {
            text += "Start: " + listView4.Items[i].Text + Environment.NewLine + "End: " + listView4.Items[i].SubItems[1].Text + Environment.NewLine + "Shift Number: " + listView4.Items[i].SubItems[2].Text + Environment.NewLine + "Total Sales: " + listView4.Items[i].SubItems[3].Text + Environment.NewLine + "----------------------------" + Environment.NewLine;
        }
        MessageBox.Show(text);
        Font MyFont = new Font("Arial", 12);
        ev.Graphics.DrawString("------------------------------------" +
    Environment.NewLine + text +
    Environment.NewLine + "------------------------------------", MyFont, new SolidBrush(System.Drawing.Color.Black),
            (ev.PageBounds.Left), ev.PageBounds.Top);
       }
4

2 に答える 2

2

PrintPageEventArgs.HasMorePages = true複数のページを印刷するように割り当てる必要があります。したがって、あなたの場合、次のようにするだけです

ev.HasMorePages = true;

PrintPageEventArgs.HasMorePages財産 -

  • 追加のページを印刷するかどうかを示す値を取得または設定します。
  • true追加のページを印刷する必要があるかどうかを返します。それ以外は、false
  • デフォルトは ですfalse
于 2013-06-20T18:05:05.700 に答える
1

メソッドハンドラーe.HasMorePages = true;内で印刷するページがさらにある場合に設定する必要があります。MSDN のドキュメントPrintPageEventによると、デフォルトは.false

于 2013-06-20T17:59:08.603 に答える