2016-06-09 4 views
0

Ich versuche, eine mehrzeilige Zeichenfolge auf einem Papier aus meiner Windows-Formulare-Anwendung zu drucken, und es funktioniert gut, aber die Formatierung gilt nur für die erste Zeile, die leicht gedruckt wird die rechte und die anderen Linien für die nach links ausgerichtet werden würde ich alle Linien wie geradeFormatieren einer mehrzeiligen Zeichenfolge zum Drucken auf einer Quittung

Beispiel

ID : value 
Head : value 
Hand : value 

wie man aus der obigen ID sehen kann, wie die erste Zeile gedruckt werden soll Drucker leicht zu die rechten, aber Kopf und Handlinien sind nicht mit der ersten Linie

ausgerichtet 0
sb.Append(strTempMessage + NEW_LINE); 
        strTempMessage = AlignNumeric("  ", PAGE_LEFT_MARGIN); 
        strTempMessage += AlignMessage(strPickSlipNote,0); 
        sb.Append(strTempMessage + NEW_LINE); 

public string AlignMessage(string strMessage, int intBeginningBlankSpace) 
     { 
      strMessage = strMessage.Trim(); 
      return AlignNumeric(strMessage, intBeginningBlankSpace); 
     } 

     public string AlignNumeric(string strMessage, int intBeginningBlankSpace) 
     { 
      intBeginningBlankSpace += strMessage.Length; 
      if (intBeginningBlankSpace > 0) 
       return strMessage.PadLeft(intBeginningBlankSpace, ' '); 
      else 
       return strMessage; 
     } 

Welche Änderungen sollte ich vornehmen, um alle Linien ausgerichtet zu bekommen?

+0

einen Blick auf diese zu lösen. http://stackoverflow.com/questions/644017/net-format-a-string-with-fixed-spaces – Mikes3ds

Antwort

0

Dies half

public string FormatPickSlipNoteLines(string input) 
     { 
      if (string.IsNullOrEmpty(input)) 
       return ""; 
      else if (input.Length < PAGE_COLUMN_SIZE) 
       return ALIGN_PAGE_CENTER + input + ALIGN_PAGE_LEFT; 
      else 
      { 
       string[] str = input.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);    
       StringBuilder sbFormatter = new StringBuilder(); 
       for (int i = 0; i < str.Length; i++) 
       { 
        sbFormatter.Append("  " + str[i] + NEW_LINE);     
       } 
       return sbFormatter.Append(NEW_LINE + ALIGN_PAGE_LEFT).ToString(); 
      } 
     } 
0

Ich bin nicht sicher, ob es der effizienteste Weg ist, dies zu tun, aber Sie können Tab hinzufügen, nachdem Sie eine neue Zeile hinzugefügt haben, z. sb.Append(strTempMessage + NEW_LINE + "\t");