winforms自动完成格式字符串

时间:2013-02-05 22:03:15

标签: c# winforms

cities = result.Results.Entities.Cast<Address>().ToList();
foreach (Address address in cities)
{
    int spaces = (30 - address.City.Length);
     string s1 = address.City.Trim();
    for (int i = 0; i <= spaces; i++)
    {
        s1 += " ";
    }
    s1 += address.PostalCode;
    customCollection.Add(s1);
}

我想连接两个字符串,以便它们在文本框autocompletecustomsource中的列中排列。

无论我做什么,我都无法让城市和邮政编码在列中对齐。

我想:

New Bedlam    101010
New York      102010

我明白了:

New Bedlam      101010
New York      102010

尝试了很多东西,string.format,padright,没什么用。

2 个答案:

答案 0 :(得分:0)

以下是使用“字符串”构建器的更新代码 总是尝试使用StringBuilder进行字符串连接操作,你可以将字符串附加到它并在这里做其他操作是更多的信息

 cities = result.Results.Entities.Cast<Address>().ToList();
                    foreach (Address address in cities)
                    {
                        int spaces = (30 - address.City.Length);
                         Stringbuilder s1 = new StringBuilder();
                         s1.append(address.City.Trim());
                        for (int i = 0; i <= spaces; i++)
                        {
                            s1.append(" ");
                        }
                        s1.append(address.PostalCode);
                        customCollection.Add(s1.ToString());
                    }

http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx

答案 1 :(得分:0)

只需使用左对齐宽度说明符string.Format

foreach (Address address in cities)
{
    string s1 = string.Format("{0,-30}{1}",address.City,address.PostalCode);
    customCollection.Add(s1);
}

请注意,如果您的文本框使用可变宽度字体(如Arial),则邮政编码将不会排列。使用像Consolas或Courier New这样的固定宽度字体来正确对齐。