2015-04-23 72 views
1

我有一個勝利表格,其中有一些labeldatagridview和一些textbox。我想以表格中顯示的確切格式打印我的所有項目。我已經嘗試使用捕捉我的窗體然後打印它。但是這樣,我的表格足夠大,我的表格不夠完整,它只顯示了我表格的一半。我不知道這是不是最好的做法。請問有沒有其他方式可以做到這一點?何況在C#中打印窗口中的所有項目#

我的示例代碼:

private void btnPrint_Click(object sender, EventArgs e) 
    { 
     CaptureScreen(); 
     printDocument1.Print(); 
    } 

private void CaptureScreen() 
    { 
     Graphics myGraphics = this.CreateGraphics(); 
     Size s = this.Size; 
     memoryImage = new Bitmap(s.Width, s.Height, myGraphics); 
     Graphics memoryGraphics = Graphics.FromImage(memoryImage); 
     memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s); 
    } 

private void printDocument1_PrintPage_1(object sender, PrintPageEventArgs e) 
    { 
     e.Graphics.DrawImage(memoryImage, 0, 0); 
    } 

,因爲我在C#中新,這將是很大的幫助,如果任何人能幫助我一些示例代碼。

+0

你也可以找到http://stackoverflow.com/questions/6623237/capture-a-form-to-image有趣的描述'cntrl.DrawToBitmap()'。 –

+0

對不起,我找不到任何幫助@PeterSchneider – Bashar

回答

0

我認爲你應該在頁面或文本描述語言如PDF或RTF中模擬你的表單佈局。以編程方式呈現屏幕截圖的方式既優雅又不失時尚,同時也遇到了您遇到的限制之一。

需要考慮的一件事是您是否應該序列化數據,例如作爲XML首先,然後導出到適合打印或顯示的數據格式,如PDF或HTML。

+0

如何在PDF中模擬我的表單佈局? – Bashar

+0

這是一個很好的問題。我的意思是將您在表單中顯示的信息格式化爲文本。即使是ASCII也是第一步。然後像'a2ps -o - | ps2pdf'(在這裏的cygwin下)似乎適用於ASCII文本,生成保留簡單佈局的PDF。當然,花哨的字體,顏色等都不會保留下來。顯然,也有XML到PDF轉換器,如果我能相信谷歌。一般來說,我會以抽象的方式(遠離C#表單)查看數據,並將C#表單視爲多種顯示方式中的一種*。 –