2012-09-10 80 views
3

我有一個Windows窗體應用程序,一個簡單的窗體包含一個面板。 我已經面板尺寸設置爲:560,579像素 和我已經設置了打印文檔的大小是這樣的:如何在c#代碼隱藏中將PrintPriviewDialog papersize設置爲a5?

System.Drawing.Printing.PaperSize a = new System.Drawing.Printing.PaperSize("A5 (148 x 210 mm)", 584, 827); 
printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = a; 

現在我想的printpreviewdialoge頁面大小爲A5或至少相同大小我的印刷文件和適合它,我怎麼能實現這一目標?

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
    { 
     Bitmap b = new Bitmap(pnlPrint.Width, pnlPrint.Height); 
     pnlPrint.DrawToBitmap(b, new System.Drawing.Rectangle(0, 0, pnlPrint.Width, pnlPrint.Height)); 
     e.Graphics.DrawImage(b,0,0); 
    } 

    private void Print() 
    { 
    PrintPreviewDialog printPreviewDialog1 = new PrintPreviewDialog(); 
    var paperSize = printDocument1.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5"); 
    printDocument1.PrinterSettings.DefaultPageSettings.PaperSize = paperSize; 
    printPreviewDialog1.Document = printDocument1; 

    printPreviewDialog1.ShowDialog(); 

    } 

回答

4

你可以從PrintDocument對象上PrinterSettings屬性A5 PaperSize對象。它具有一個PaperSizes屬性,該屬性保存所選打印機的所有紙張尺寸。你可以使用LINQ找到你想要的。例如:

var paperSize = printDoc.PrinterSettings.PaperSizes.Cast<PaperSize>().FirstOrDefault(e => e.PaperName == "A5"); 
printDoc.PrinterSettings.DefaultPageSettings.PaperSize = paperSize; 
+1

非常感謝,但我鋼有問題! printpriviewdialoge不適合我的面板,我已經把它繪製到位圖:(我添加了我的完整代碼,printpriviewdialoge是鋼a4 – Karamafrooz

+0

我的面板是在打印priview的頂部角落,其餘是白色的,我想要其餘的適合我的面板圖像 – Karamafrooz

+0

好的,目前還不清楚你在問什麼。你想要的紙張大小是特定的,或者你想打印預覽對話框是一定的大小? –

相關問題