Dmitry Koshevoy
Dmitry Koshevoy

Reputation: 331

WPF TextBox doesn't display spaces correctly

First of all I'm new to WPF. I have some string value that already contains formatted text, for example:

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

When I write it to file everything is fine. But when I try to pass this string to textBox I see something like this:

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

It doesn't make sense for me, why I've lost my spaces. Should I use RichTextBox? I've tried but actually text displayed in the same way

Here is my code. I'm sorry for my low skill coding level

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

Upvotes: 0

Views: 762

Answers (2)

Fabian
Fabian

Reputation: 480

Had exactly the same problem. Used String.Format for padding.

See: 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}"

This did not get displayed correctly.

I could fix the issue by choosing a monospaced font

Upvotes: 0

Seth Kitchen
Seth Kitchen

Reputation: 1566

Spaces are not good for formatting. Try Tabs:

"\t"

Upvotes: 3

Related Questions