PrintDocument打印、預覽、打印機設置和打印屬性的方法

  WindowsForm 使用 PrintDocument打印、預覽、打印機設置和打印屬性的方法。spa

private void Form1_Load(object sender, System.EventArgs e) 
{ 
//獲取或設置一個值,該值指示是否發送到文件或端口 
printDocument1.PrinterSettings.PrintToFile = true; 
//設置打印時橫向仍是縱向 
printDocument1.DefaultPageSettings.Landscape = true; 
} 
private void fileOpenMenuItem_Click(object sender, System.EventArgs e) 
{ 
OpenFile(); 
} 
private void OpenFile() 
{ 
openFileDialog1.Filter = "Text Files (*.txt)|*.txt";//打開文本的類型 
//獲取文件對話框的初始目錄(StartupPath)得到bin文件下的文件 
openFileDialog1.InitialDirectory = System.Windows.Forms.Application.StartupPath; 
DialogResult userResponse = openFileDialog1.ShowDialog(); 
//MessageBox.Show(userResponse.ToString()); 
if (userResponse==DialogResult.OK) 
{ 
filePath = openFileDialog1.FileName.ToString();//轉換文件路徑 
} 
} 
private void MyPrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
//充分利用e 
{ 
int topMargin = printDocument1.DefaultPageSettings.Margins.Top;//上邊距 
int leftMargin = printDocument1.DefaultPageSettings.Margins.Left;//左邊距 
float linesPerPage = 0;//頁面行號 
float verticalPosition = 0;//繪製字符串的縱向位置 
float horizontalPosition=leftMargin;//左邊距 
string textLine = null;//行字符串 
currentLine = 0;//行計數器 
// float Xline=0; 
//int line=0; 
// Calculate the number of lines per page. 
linesPerPage = e.MarginBounds.Height / myFont.GetHeight(e.Graphics); 
// Xline=e.MarginBounds.Width/myFont.GetHeight(); 
// for each text line that will fit on the page, read a new line from the document 
while (currentLine < linesPerPage ) 
{ 
textLine = streamToPrint.ReadLine(); 
if(textLine == null) 
{ 
break; 
} 
// 求出已經打印的範圍 
verticalPosition = topMargin + currentLine * myFont.GetHeight(e.Graphics); 
// 設置頁面的屬性 
e.Graphics.DrawString(textLine, myFont, myBrush, horizontalPosition, verticalPosition); 
// 增長行數 
currentLine ++; 
} 
// If more lines of text exist in the file, print another page. 
if (textLine != null) 
{ 
e.HasMorePages = true; 
} 
else 
{ 
e.HasMorePages = false; 
} 
} 
private void printPreviewButton_Click(object sender, System.EventArgs e) 
{ 
try 
{ 
streamToPrint = new StreamReader(filePath); 
try 
{ 
PrintPreview(); 
} 
finally 
{ 
streamToPrint.Close(); 
} 
} 
catch(Exception ex) 
{ 
MessageBox.Show(ex.Message); 
} 
} 
private void runtimeDialogButton_Click(object sender, System.EventArgs e) 
{ 
try 
{ 
streamToPrint = new StreamReader(filePath); 
try 
{ 
RuntimeDialog(); 
} 
finally 
{ 
streamToPrint.Close(); 
} 
} 
catch(Exception ex) 
{ 
MessageBox.Show(ex.Message); 
} 
} 
private void printPreviewControlButton_Click(object sender, System.EventArgs e) 
{ 
try 
{ 
streamToPrint = new StreamReader(filePath); 
try 
{ 
PrintPreviewControl(); 
} 
finally 
{ 
streamToPrint.Close(); 
} 
} 
catch(Exception ex) 
{ 
MessageBox.Show(ex.Message); 
} 
} 
private void RuntimeDialog() 
{ 
PrintPreviewDialog pPDlg; 
pPDlg = new PrintPreviewDialog(); 
pPDlg.Document = pDoc; 
pPDlg.WindowState = FormWindowState.Maximized; 
pPDlg.PrintPreviewControl.Columns = 2; 
pPDlg.ShowDialog(); 
pPDlg.Dispose(); 
} 
private void PrintPreviewControl() 
{ 
Form formPreview = new Form(); 
PrintPreviewControl previewControl = new PrintPreviewControl(); 
previewControl.Document = printDocument1; 
previewControl.StartPage = 2; 
formPreview.WindowState = FormWindowState.Maximized; 
formPreview.Controls.Add(previewControl); 
formPreview.Controls[0].Dock = DockStyle.Fill; 
formPreview.ShowDialog(); 
formPreview.Dispose(); 
} 
private void PrintPreview() 
{ 
//設置頁面的預覽的頁碼 
//設置顯示頁面顯示的大小(也就是原頁面的倍數) 
printPreviewDialog1.PrintPreviewControl.StartPage = 0; 
printPreviewDialog1.PrintPreviewControl.Zoom =1.0; 
//設置或返回窗口狀態,即該窗口是最小化、正常大小仍是其餘狀態。 
printPreviewDialog1.WindowState = FormWindowState.Maximized; 
//設置和獲取須要預覽的文檔 
//將窗體顯示爲指定者的模式對話框 
printPreviewDialog1.Document = printDocument1; 
printPreviewDialog1.ShowDialog(); 
} 
private void PrintDoc() 
{ 
printDialog1.Document = printDocument1; 
DialogResult userResPonse= printDialog1.ShowDialog(); 
if(userResPonse==DialogResult.OK) 
{ 
printDocument1.Print(); 
} 
} 
//獲取打印機的設置和打印的屬性 
private void button1_Click(object sender, System.EventArgs e) 
{ 
try 
{ 
streamToPrint=new StreamReader(filePath); 
try 
{ 
PrintDoc(); 
} 
catch{} 
} 
catch(Exception ex) 
{ 
MessageBox.Show(ex.Message); 
} 
finally 
{ 
streamToPrint.Close(); 
} 
} 
} 
} 
相關文章
相關標籤/搜索