2013-05-12 2 views
-1

Я пишу приложение, которое должно печатать некоторую информацию, которая поступает из DataGridView, у меня уже есть строка, которую я хотел бы распечатать, я просто не знаю, как это сделать. Я нашел некоторые вещи в Интернете, которые сказали, что мне нужно будет использовать объект PrintDocument и PrintDialog.Как напечатать строку с принтером?

Предположим, что у меня есть 3 строки, и я хочу печатать каждый в одной строке (строки 1, 2 и 3), но первый должен быть выделен жирным шрифтом и использовать шрифт Arial. Выход (на бумаге) будет:

string 1 (in bold and using the Arial font) 

string 2 

string 3 

EDIT: (спросил abelenky)

Кодекс:

private void PrintCoupon() 
    { 
     string text = "Coupon\n"; 

     foreach (DataGridViewRow dgvRow in dataGridViewCarrinho.Rows) 
     { 
      foreach (DataGridViewCell dgvCell in dgvRow.Cells) 
      { 
       text += dgvCell.Value.ToString() + " "; 
      } 

      text += "\n"; 
     } 

     MessageBox.Show(text); 
     // I should print the coupon here 
    } 

Так как же я могу это сделать с помощью C#?

Спасибо.

+0

показать нам свою код. – abelenky

+0

@abelenky есть код, полный исходный код выше 390 строк. Но это та часть, которую я бы напечатал. – Zignd

+0

да, вы правы, вам нужно использовать документ printdocument, и я объяснил, как в моем ответе вы попробовали? – Mehran

ответ

2

для печати строк на бумаге, вы должны обратить их сначала на PrintDocument с помощью GDI + в C#

в Winform добавить PrintDocument инструмент для вашего проекта, и дважды щелкните на нем, чтобы получить доступ к обработчику PrintPage событий этого, предполагается, что вы уже s1, s2 и s3 как строковые переменные, в обработчик событий PrintPage мы используем:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
{ 
    Font f1 = new Font("Arial", 24, FontStyle.Bold, GraphicsUnit.Pixel); 
    Font f2 = new Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Pixel); 
    Font f3 = new Font("Arial", 12, FontStyle.Regular, GraphicsUnit.Pixel); 
    e.Graphics.DrawString(s1, f1, Brushes.Black, new Point(10, 10)); 
    e.Graphics.DrawString(s2, f2, Brushes.Black, new Point(10, 40)); 
    e.Graphics.DrawString(s3, f3, Brushes.Black, new Point(10, 60)); 
} 

и всякий раз, когда вы хотите, чтобы распечатать документ:

printDocument1.Print(); 

вы можете также рассмотреть вопрос об использовании PrintPreviewDialog, чтобы увидеть, что происходит перед печатью документа

1

Попробуйте это ..

using System.Drawing; 

private void printButton_Click(object sender, EventArgs e) 
{ 
PrintDocument pd = new PrintDocument(); 
pd.PrintPage += new PrintPageEventHandler 
      (this.pd_PrintPage); 
pd.Print(); 
} 

// The PrintPage event is raised for each page to be printed. 
void pd_PrintPage(Object* /*sender*/, PrintPageEventArgs* ev) 
{ 
Font myFont = new Font("m_svoboda", 14, FontStyle.Underline, GraphicsUnit.Point); 

float lineHeight = myFont.GetHeight(e.Graphics) + 4; 

float yLineTop = e.MarginBounds.Top; 

string text = "Coupon\n"; 

foreach (DataGridViewRow dgvRow in dataGridViewCarrinho.Rows) 
    { 
     foreach (DataGridViewCell dgvCell in dgvRow.Cells) 
     { 
      text += dgvCell.Value.ToString() + " "; 
     } 

     text += "\n"; 
    } 

    //MessageBox.Show(text); 
    // I should print the coupon here 
    e.Graphics.DrawString(text, myFont, Brushes.Black, 
    new PointF(e.MarginBounds.Left, yLineTop)); 

    yLineTop += lineHeight; 

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