在Windows窗体中填充C#列表框

时间:2018-02-08 14:19:03

标签: c#

我正在制作小型销售点应用。我想在产品名称和价格之间添加空格。我在产品名称后使用debugElement.injector(SomeClass)。问题是,如果产品名称较大,则价格不会在同一行中对齐。 请帮帮我。

enter image description here

2 个答案:

答案 0 :(得分:0)

你可以按照这些方式编写方法,

    public class Data
    {
        public string Name { get; set; }
        public double Price { get; set; }
    }
    //Takes data list and desired lenght of merged string data
    public static List<string> MergeData(List<Data> data, int maxLenght)
    {
        List<string> mergedData = new List<string>();
        foreach (var d in data)
        {
            //Calculates how many spaces are needed to be inserted between Name and Price
            int numberOfSpacesNeeded = maxLenght - (d.Name.Length + d.Price.ToString().Length);
            //Builds new string with merged data
            var sb = new StringBuilder();
            sb.Append(d.Name)
                .Append(' ', numberOfSpacesNeeded)
                .Append(d.Price.ToString());
            mergedData.Add(sb.ToString());
        }
        return mergedData;
    }

不需要maxLength参数的第二个解决方案

    public static List<string> MergeData(List<Data> data)
    {
        int maxLenght = data.Max(x => x.Name.Length + x.Price.ToString().Length) + 1;
        List<string> mergedData = new List<string>();
        foreach (var d in data)
        {
            string name = d.Name;
            int numberOfSpacesNeeded = maxLenght - (d.Name.Length + d.Price.ToString().Length);
            var sb = new StringBuilder();
            sb.Append(name)
                .Append(' ', numberOfSpacesNeeded)
                .Append(d.Price.ToString());
            mergedData.Add(sb.ToString());
        }
        return mergedData;
    }

这两种解决方案都会将Price对齐,如果你想将它对齐到左边你应该找到价格的最大长度和RightPad其他价格以匹配它的长度,然后计算你应该在Name和Price之间添加多少空格

答案 1 :(得分:-1)

您可以缩短产品名称吗?

        string str = "12345678901234567890";
        str = str.Remove(15);
        str = str.PadRight(45);
        Console.WriteLine(str);