技术开发 频道

C#中打印文档按需换行

【IT168 技术资源】

        有时候在程序中需要把输出的文本进行打印,而笔者在此遇到了一点问题。代码如下:

printPage event
e.Graphics.DrawString(txtResult.Test,New Font("Arial",12,FontStyle.Regular),Brushes.Black,80,80)
printEnd event
MessageBox……
……
printDoucument1.Print()

        textbox已经设置为多行,输入文字后,一段很长的文字在textbox里是可以自动换行。这样做,文章的确可以打印,但是textbox里面会自动换行的地方在纸张上却不会自动换行,一定要遇到&CrLf才行。结果导致一段很长的文字无法打印完,纸张上仅能打印出部分文本,出界的文字全部丢失。
        最常见的方法是通过限定每行的字数来进行强制换行,或换文本所使用的控件。但经过思考,途径还有许多,具体代码如下:

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    string str="";
    int y=textBox1.TextLength/5;
    for(int i=0;i<=textBox1.TextLength/5;i++)//5个字符就换行
    {
         if(i<y)
         {
            str+=textBox1.Text.Substring(i*5,5)+Environment.NewLine;
         }
            else
            {
               str+=textBox1.Text.Substring(i*5);
            }
    }
    e.Graphics.DrawString(str, new Font("Arial",12,FontStyle.Regular),Brushes.Black,80,80);
}

private void button3_Click(object sender, System.EventArgs e)
{
  printDocument1.PrintPage+=new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
    printDocument1.Print();
}

private void printDocument1_EndPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
  MessageBox.Show("Print");
}

该方法主要是通过Environment.NewLine来达到自动换行的目的。

0
相关文章