2017-02-24 16 views
0

C#の印刷文書オブジェクトを使用して一連の文字列を印刷していますが、正常に動作しています。各文字列はデフォルトで新しい行に出力されます。文字列に行数よりも多くの文字が含まれている場合、残りの文字は切り捨てられ、次の行には表示されません。 誰かが私の行の文字数を修正し、新しい行の超過文字を表示する方法を教えてもらえますか?印刷文書の印刷の線幅を固定する方法C#

おかげ

答えて

1

各行の最後に、あなたのテキストの折り返しを作るために、あなたはRectangleオブジェクトを受け取りDrawStringオーバーロードを呼び出す必要があります。テキストは、その長方形内にラップされます。

private void pd_PrintPage(object sender, PrintPageEventArgs e) 
{ 
    //This is a very long string that should wrap when printing 
    var s = new string('a', 2048); 

    //define a rectangle for the text 
    var r = new Rectangle(50, 50, 500, 500); 

    //draw the text into the rectangle. The text will 
    //wrap when it reaches the edge of the rectangle 
    e.Graphics.DrawString(s, Me.Font, Brushes.Black, r); 

    e.HasMorePages = false; 
} 
0

これはベストプラクティスではないかもしれないが、1つのオプションの配列を分割することで、次に文字列はまだだろうかどうかに基づいて行の文字列にそれを追加します行の長さの制限の下で。モノスペーステキストを使用しない場合は、文字幅を考慮する必要があることに注意してください。

例:

String sentence = "Hello my name is Bob, and I'm testing the line length in this program."; 
String[] words = sentence.Split(); 

//Assigning first word here to avoid begining with a space. 
String line = words[0]; 

      //Starting at 1, as 0 has already been assigned 
      for (int i = 1; i < words.Length; i++) 
      { 
       //Test for line length here 
       if ((line + words[i]).Length < 10) 
       { 
        line = line + " " + words[i]; 
       } 
       else 
       { 
        Console.WriteLine(line); 
        line = words[i]; 
       } 
      } 

      Console.WriteLine(line); 
関連する問題