Reputation: 285
I want to print my TextBox
and here is my code:
private void MenuItemPrint()
{
if (FileName != "")
{
PrintDocument document = new PrintDocument();
document.PrinterSettings.PrintFileName = FileName;
document.Print();
}
}
and it doesn't work. What should I do?
Upvotes: 5
Views: 28386
Reputation: 26209
Try This:
private void MenuItemPrint()
{
if (!FileName.Trim().Equals(""))
{
using(PrintDocument pd = new PrintDocument())
{
using(PrintDialog printDialog=new PrintDialog())
{
if(printDialog.ShowDialog()==DialogResult.Yes)
{
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
pd.Print();
}
}
}
}
}
private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
ev.Graphics.DrawString(FileName, new Font("Arial", 10), Brushes.Black,
ev.MarginBounds.Left, 0, new StringFormat());
}
Upvotes: 5
Reputation: 5810
Just try with following code
private void MenuItemPrint()
{
if(!string.IsNullOrEmpty(FileName.Trim())
{
PrintDialog printdg = new PrintDialog();
if (printdg.ShowDialog() == DialogResult.OK)
{
PrintDocument pd = new PrintDocument();
pd.PrinterSettings = printdg.PrinterSettings;
pd.PrintPage += PrintPage;
pd.Print();
pd.Dispose();
}
}
}
private void PrintPage(object o, PrintPageEventArgs e)
{
e.Graphics.DrawString(FileName, new Font("Arial", 20), Brushes.Black, 10, 25);
}
Upvotes: 3
Reputation: 2469
You can use following code to print the content of a textbox with the selected printer:
private void PrintTextBoxContent()
{
#region Printer Selection
PrintDialog printDlg = new PrintDialog();
#endregion
#region Create Document
PrintDocument printDoc = new PrintDocument();
printDoc.DocumentName = "Print Document";
printDoc.PrintPage += printDoc_PrintPage;
printDlg.Document = printDoc;
#endregion
if(printDlg.ShowDialog() == DialogResult.OK)
printDoc.Print();
}
void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
e.Graphics.DrawString(this.textBox1.Text, this.textBox1.Font, Brushes.Black, 10, 25);
}
Upvotes: 4