2013-12-14 2 views
0

Я делаю простую тестовую программу на рабочем столе. Я хочу иметь возможность щелкнуть элемент меню на панели menutool (Печать) и распечатать документ на моем принтере. Следующий код - это то, что я использую, но я не уверен, что это все, что мне нужно для простой печати. Я новичок в C# и, следовательно, не полностью знаком с классом printDocument.Печать файла .rtf или .txt с помощью кнопки PRINT?

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

try { content = File.ReadAllText (myFileName); PrintDocument pd = new PrintDocument(); pd.PrintPage + = новый PrintPageEventHandler (pd_PrintPage); pd.Print(); } –

Смежные вопросы