2013-04-13 51 views
7

Tôi muốn hiển thị hộp thoại in trước khi in tài liệu, để người dùng có thể chọn một máy in khác trước khi in. Mã để in là:Hiển thị hộp thoại in trước khi in

private void button1_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       PrintDocument pd = new PrintDocument(); 
       pd.PrintPage += new PrintPageEventHandler(PrintImage); 
       pd.Print(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, ToString()); 
      } 
     } 
     void PrintImage(object o, PrintPageEventArgs e) 
     { 
      int x = SystemInformation.WorkingArea.X; 
      int y = SystemInformation.WorkingArea.Y; 
      int width = this.Width; 
      int height = this.Height; 

      Rectangle bounds = new Rectangle(x, y, width, height); 

      Bitmap img = new Bitmap(width, height); 

      this.DrawToBitmap(img, bounds); 
      Point p = new Point(100, 100); 
      e.Graphics.DrawImage(img, p); 
     } 

mã này có thể in biểu mẫu hiện tại không?

Trả lời

15

Bạn phải sử dụng PrintDialog

PrintDocument pd = new PrintDocument(); 
pd.PrintPage += new PrintPageEventHandler(PrintPage); 
PrintDialog pdi = new PrintDialog(); 
pdi.Document = pd; 
if (pdi.ShowDialog() == DialogResult.OK) 
{ 
    pd.Print(); 
} 
else 
{ 
     MessageBox.Show("Print Cancelled"); 
} 

Sửa (từ Bình luận)

On 64-bit Windows và với một số phiên bản của .NET bạn có thể phải thiết lập pdi.UseExDialog = true; để cửa sổ hộp thoại xuất hiện.

+0

khi nhấn nút, hộp thoại in không mở, nhưng bảng thông báo hiển thị Print Hủy bỏ được hiển thị – user2257581

+0

@ user2257581: tôi thử nghiệm ngay bây giờ, nó hoạt động, tạo một ứng dụng mới và kiểm tra lại, xem nó hoạt động – KF2

+2

Trên Windows 64 bit và với một số phiên bản .NET bạn có thể phải đặt 'pdi.UseExDialog = true; 'cho cửa sổ hộp thoại xuất hiện. Xem http://stackoverflow.com/q/6385844/202010 để biết chi tiết. –

1

Vì lợi ích của sự hoàn chỉnh, mã nên bao gồm sử dụng chỉ thị

using System.Drawing.Printing; 

để tham khảo thêm xin vui lòng goto PrintDocument Class

Các vấn đề liên quan