2016-06-09 35 views
0

我試圖從我的Windows窗體應用程序在紙上打印多行字符串,並且它的打印效果不錯,但格式僅適用於打印到第一行的第一行右和其他線在被對準到離開,我想要被打印一樣的第一行的所有行格式化要在打印在收據上的多行字符串

ID : value 
Head : value 
Hand : value 

如可以從上面的ID看到的是打印機稍微正確但頭部和手部線條不與第一行對齊

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; 
     } 

我應該做些什麼改變才能讓所有行對齊?

+0

看看這個。 http://stackoverflow.com/questions/644017/net-format-a-string-with-fixed-spaces – Mikes3ds

回答

0

這有助於解決

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

我不太確定它是否是最有效的方法,但您可以在追加新行後添加標籤,例如, sb.Append(strTempMessage + NEW_LINE + "\t");