使用列表框存储不同类型的数据

时间:2017-04-26 22:36:30

标签: c# wpf listbox

我有一个文件有三种类型的数据,第一种是金属类型,第二种是颜色,第三种是颜色数量,但它们在文本文件中出现的次数发生变化(最后两种类型的数据) ,

     led, black, 0.50, blue, 0.75, green, 0.60 
     copper,blue, 0.48, red, 0.88, pink, 0.33
     steel, red, 0.65, black, 0.55
     iron, white, 0.5
     copper, black, 1, red, 0.80
     steel, red, 0.62, yellow, 0.50
     copper, blue, 0.48

我需要一个流阅读器来读取这些数据并将其存储在适当的数据结构中。然后可以在我的应用程序的不同部分用于WPF,例如,金属类型将放在一个列表框中,另外两个将放在另一个列表框中。

     StreamReader reader = new StreamReader(File.OpenRead("paint.txt"));
        string line;
        while ((line = reader.ReadLine()) != null)
        {

            string[] items = line.Split(',');
            cat1 = (items[2]);
            string path = null;
            ;

            string[] led = new string[items.Length];
            string[] copper = new string[items.Length];


            for (int i = 0; i < items.Length; i++)
            {
                led[i] = items[i];
                copper[j] = items[i]


                foreach (string paint in items)
                {
                    if (paint.StartsWith("led")) /// paint
                    {
                        path = paint;
                        led[i] = paint;

                    }

                    if (paint.StartsWith("copper")) /// paint
                    {
                        path = paint;
                        led[i] = paint;

                    }
                }

            }

        }

}

到目前为止我做了什么

1 个答案:

答案 0 :(得分:0)

这很简单。在流阅读器中读取文件。用逗号分割流并创建一个字符串列表。应用以下过滤方法对Metal,Color和Double中的数据进行分类。在这里,我使用了System.Drawing的引用来检查颜色名称。

private void ClassifyData()
        {
            double dblValue = 0;
            foreach (var item in RandomData)
            {
                if (double.TryParse(item, out dblValue))
                {
                    dblList.Add(dblValue);
                }
                else if (CheckColor(item))
                {
                    ColorList.Add(item);
                }
                else
                {
                    MetalList.Add(item);
                }
            }
        }

        private bool CheckColor(string colorName)
        {
            Color c = Color.FromName(colorName);
            if (c.IsKnownColor)
                return true;
            return false;
        }