2015-09-17 94 views
0

首先,我是WPF的新手。我有一些字符串值已包含格式化文本,例如:WPF TextBox不能正确显示空格

Person  Name = Jack  Age = 40  #male 
Person  Name = Bill  Age = 18  #male 
Person  Name = Liza  Age = 19  #female 
Person  Name = Kate  Age = 38  #female 

当我将它写入文件一切都很好。但是,当我试图通过这个字符串textBox中我看到这样的事情:

Person Name = Jack Age = 40  #male 
Person  Name = Bill  Age = 18 #male 
Person Name = Liza  Age = 19 #female 
Person  Name = Kate  Age = 38 #female 

它没有任何意义,我,为什么我失去了我的空间。我应该使用RichTextBox吗?我尝试过,但实际上文字以相同的方式显示

这是我的代码。我很抱歉我的低技能编码水平

public override string TransformCollectionToSourceType(IList<ElementPin> elementPins) 
    { 
     var stringBuilder = new StringBuilder(); 
     var maxSignalNameLength = elementPins.MaxStringLength(pin => pin.SignalName.Length); 
     var maxPinNameLength = elementPins.HasEmptyValue(pin => pin.PinName) 
            ? EmpyPinName.Length 
            : elementPins.MaxStringLength(pin => pin.PinName.Length); 
     var maxIoStandartLength = elementPins.MaxStringLength(pin => pin.IoStandardValue.Length) 
            > EmptyIoStandard.Length 
             ? elementPins.MaxStringLength(pin => pin.IoStandardValue.Length) + 1 
             : EmptyIoStandard.Length + 1; 
     foreach (var elemPin in elementPins) 
     { 
      var signalName = elemPin.ElementCommented 
           ? string.IsNullOrWhiteSpace(elemPin.SignalName) 
             ? EmptySignalName.PadRight(maxSignalNameLength) 
             : elemPin.SignalName.PadRight(maxSignalNameLength) 
           : string.IsNullOrWhiteSpace(elemPin.SignalName) 
             ? WhiteSpace + EmptySignalName.PadRight(maxSignalNameLength) 
             : WhiteSpace + elemPin.SignalName.PadRight(maxSignalNameLength); 
      var pinName = string.IsNullOrWhiteSpace(elemPin.PinName) 
           ? EmpyPinName.PadRight(maxPinNameLength) 
           : elemPin.PinName.PadRight(maxPinNameLength); 
      var ioStandardValue = string.IsNullOrWhiteSpace(elemPin.IoStandardValue) 
             ? (EmptyIoStandard + ";").PadRight(maxIoStandartLength) 
             : (elemPin.IoStandardValue + ";").PadRight(maxIoStandartLength); 
      stringBuilder.AppendFormat(
       "{0}NET {1} LOC = {2} | IOSTANDARD = {3} # {4}", 
       elemPin.ElementCommented ? "#" : string.Empty, 
       signalName, 
       pinName, 
       ioStandardValue, 
       string.IsNullOrWhiteSpace(elemPin.Comment) ? EmptyComment : elemPin.Comment); 
      stringBuilder.AppendLine(); 
     } 

     return stringBuilder.ToString().RemoveLastNewlineSymbol(); 
    } 
+2

只需使用一个固定宽度字体解决问题。并确保一个文本框真的是你需要的(而不是一张表)。 –

回答

3

空格不适合格式化。尝试标签:

“\ t”

+0

我使用string.Pad进行格式化。如果我添加\ t符号而不是空格,我的格式将被完全破坏 –

+0

请发布您的代码。 –

+0

我已将它添加到quiestion –

0

有完全相同的问题。 用于填充的用于String.Format。

请参见:https://msdn.microsoft.com/en-us/library/aa331875(v=vs.71).aspx

var string1 = "Some left-aligned string with maxWith = 60"; 
var string2 = "Some right-aligned string"; 
var output = $"{string1, -60}{string2, 30}" 

这并没有得到正确显示。

我可以通过选择等宽字体