Reputation: 3213
I am making a simple work note pad test program. I want to be able to click on a menu item in the menutool bar (Print) and have the document print to my printer. The following code is what I use but I am not sure if this is all that I need for a simple print. I am new to C# and thus not complete familiar with the printDocument class.
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);
}
Upvotes: 0
Views: 1293
Reputation: 26209
Problem : You are not handling the PrintPagEvent
properly.
Solution : to print the document you need to handle the PrintPageEvent
properly by writing the PrintPageEvent
Handler.
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());
}
Upvotes: 1