本帖最后由 ap626 于 2009-12-13 23:14:30 编辑

解决方案 »

  1.   

    代码来自http://bingning.net/free/source/graphics/printrange.html //现在的页
     private int currentPage = 1;
     
     //Button1的点击事件处理器
     private void Button1_Click(object sender, System.EventArgs e)
     {
         //PrintDocument对象作成
         System.Drawing.Printing.PrintDocument pd =
             new System.Drawing.Printing.PrintDocument();
         //追加PrintPage事件处理器
         pd.PrintPage +=
             new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);
     
         //PrintDialog类作成
         PrintDialog pdlg = new PrintDialog();
         //指定PrintDocument
         pdlg.Document = pd;
     
         //设定为可以指定页
         pdlg.AllowSomePages = true;
         //指定页指定的最小值和最大值
         pdlg.PrinterSettings.MinimumPage = 1;
         pdlg.PrinterSettings.MaximumPage = 10;
         //指定开始打印和最终页
         pdlg.PrinterSettings.FromPage = pdlg.PrinterSettings.MinimumPage;
         pdlg.PrinterSettings.ToPage = pdlg.PrinterSettings.MaximumPage;
     
         //表示打印的选择窗口
         if (pdlg.ShowDialog() == DialogResult.OK)
         {
             //点击OK时打印
             pd.Print();
         }
     }
     
     private void pd_PrintPage(object sender,
         System.Drawing.Printing.PrintPageEventArgs e)
     {
         if (e.PageSettings.PrinterSettings.PrintRange ==
             System.Drawing.Printing.PrintRange.SomePages &&
             currentPage == 1)
         {
             currentPage = e.PageSettings.PrinterSettings.FromPage;
         }
     
         //描绘使用currentPage指定的页
         Font f = new Font("Arial", 100);
         e.Graphics.DrawString(currentPage.ToString(),
             f, Brushes.Black, 0, 0);
         f.Dispose();
     
         //检测下面是否还有页
         if (currentPage >= 10 ||
             (e.PageSettings.PrinterSettings.PrintRange ==
             System.Drawing.Printing.PrintRange.SomePages &&
             e.PageSettings.PrinterSettings.ToPage <= currentPage))
         {
             //没有页时通知
             e.HasMorePages = false;
             currentPage = 1;
         }
         else
         {
             e.HasMorePages = true;
             currentPage++;
         }
     }
      

  2.   

    AllowSomePages = true;
      

  3.   

    我的代码中有了AllowSomePages = true; 
    它需要用户单击选择指定页码,它默认是全部
    我想要的是指定页码范围为选中
      

  4.   

     printdialog.PrinterSettings.PrintRange = PrintRange.SomePages;哈哈,这个才是我想要的效果。