2013-12-14 28 views
0

我正在做一個簡單的工作記事簿測試程序。我希望能夠點擊menutool欄中的菜單項(打印)並將文檔打印到我的打印機。下面的代碼是我使用的,但我不確定這是否是我需要的簡單打印。我是C#的新手,因此不完全熟悉printDocument類。從PRINT按鈕打印.rtf或.txt文件?

private void printToolStripMenuItem_Click(object sender, EventArgs e) 
     { 


     try 
     { 
      StreamReader streamToPrint = new StreamReader 
       ("C:\\My Documents\\MyFile.txt"); 
      try 
      { 
       Font printFont = new Font("Arial", 10); 
       PrintDocument pd = new PrintDocument(); 
       pd.PrintPage += new PrintPageEventHandler(myFileName); 
       pd.Print(); 
      } 
      finally 
      { 
       streamToPrint.Close(); 
      } 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

回答

1

問題:你是不是處理PrintPagEvent正常。

解決方案:打印您需要通過編寫PrintPageEvent處理程序妥善處理PrintPageEvent文檔。

String content=""; 
    Font printFont = new Font("Arial", 10); 
    private void printToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     try 
     { 
       content= File.ReadAllText("C:\\My Documents\\MyFile.txt"); 
       PrintDocument pd = new PrintDocument(); 
       pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); 
       pd.Print(); 
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 
    } 
    private void pd_PrintPage(object sender, PrintPageEventArgs ev) 
    { 
     ev.Graphics.DrawString(content,printFont , Brushes.Black, 
         ev.MarginBounds.Left, 0, new StringFormat()); 
    } 
+0

我現在收到的唯一錯誤是對路徑的訪問被拒絕。我在使用的任何目錄或驅動器上收到此錯誤。另外,如果我想保存目錄,以便用戶可以從任何位置的任何文件進行打印,最好是在富文本框中打開該文件,因爲人們確實會打印尚未打開的文檔。我改變它,只是引用myFile而不是目錄,它的工作原理。感謝您的幫助。 –

+0

嘗試 內容= File.ReadAllText(myFileName); PrintDocument pd = new PrintDocument(); pd.PrintPage + = new PrintPageEventHandler(pd_PrintPage); pd.Print(); } –