2012-03-23 24 views
5

Tôi sử dụng this device để in mã vạch nhưng máy in không ngừng in, cho tôi thẻ trống cho đến khi tôi tắt nó. Tôi tìm thấy this question nhưng chỉ định Kích thước giấy không giúp tôi.Không thể ngừng in

Code tôi sử dụng:

PrintDocument document = new PrintDocument(); 
document.DefaultPageSettings.PaperSize = 
    new PaperSize("Custom", Centimeters(7), Centimeters(5)); 
document.PrintPage += (s, a) => 
{ 
    a.Graphics.DrawString("*123456*", 
          BarcodeFont, 
          new SolidBrush(Color.Black), 
          new Point(0, 0)); 
} 
document.Print(); 

Centimeters Phương pháp:

// Converts the unit "Hundredths of an inch" to centimeter. 
int Centimeters(int centimeters) 
{ 
    return (int)((centimeters * 100)/2.54); 
} 

It in mã vạch vào thẻ đầu tiên một cách chính xác nhưng nó không dừng lại. Thẻ là 7x5 cm. và tôi đặt khổ giấy theo điều này, tôi không biết mình có thể làm gì khác.

Edit: Setting HasMorePages false không giúp và tôi biết điều đó là không phải vì các thiết bị tôi sử dụng: Có một số chương trình khác mà tôi hiện đang sử dụng để in mã vạch và tất cả họ đều làm việc.

+0

Sử dụng trình gỡ lỗi. Đặt điểm ngắt trên mã lambda PrintPage * và * cuộc gọi Print(). Với tỷ lệ cược đáng kể, điểm ngắt cuộc gọi Print() nhiều lần truy cập. Nhìn vào ngăn xếp cuộc gọi để xem điều đó đã xảy ra như thế nào. –

+0

@Hans, nope, nó chỉ truy cập một lần. –

+0

Bạn có đang thay đổi mã in không? (Hầu hết) Máy in nhiệt cần phải được hiệu chuẩn lại trước khi nó sẽ nhận thấy kích thước nhãn đã thay đổi. (sManual_English.pdf p27) – charlesbridge

Trả lời

5

Đặt HasMorePages tài sản của eventArgs false:

document.PrintPage += (s, a) => 
{ 
    a.Graphics.DrawString("*123456*", 
          BarcodeFont, 
          new SolidBrush(Color.Black), 
          new Point(0, 0)); 
    a.HasMorePages = false; 
} 
+0

Cảm ơn bạn đã trả lời nhưng nó không hoạt động. Nó vẫn tiếp tục cho đến khi tôi tắt công tắc nguồn. –

+0

Nó đã là sai, đây không phải là nguyên nhân. –

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