拥有存储数据的演化列表,没有数据库

时间:2014-07-03 09:16:00

标签: c# winforms

我正在做一个winforms应用程序,用于识别车辆。

在此应用程序中,我将使用与车辆相对应的识别码。

很简单,一年内所有汽车只有一个代码,一年内只有一个自行车代码。

所以,我正在考虑这种数据::

year | car code | bike code
2014 | 156 | 185
2015 | 158 | 189

我有一个子表单,它会将所有这些数据显示到列表框(或其他列表类型)中,并允许我添加一行。当我添加一行时,我将显示在列表中,并将添加到文件中。

另一种观点是,我将展示所有'年'分成一个组合框。

我想知道的是,将数据存储到文件(csv,xml或其他......)的最佳方法是什么,以便我可以轻松地读取和编辑此文件,并将数据显示为

我知道如何处理数据库,但没有,我从来没有做过,也没有找到任何可以帮助我的东西。

我希望我清楚,如果没有,请告诉我。

编辑

public FormPref()
        {

            lst = GetIdentifiant(path);
            dataGridViewIdentifiant.DataSource = lst;
}

private void buttonAddIdentifiant_Click(object sender, EventArgs e)
        {
            Vehicule identifiant = new Vehicule();
            if (!string.IsNullOrEmpty(textBoxYear .Text) &&
                !string.IsNullOrEmpty(textBoxCarCode .Text) &&
                !string.IsNullOrEmpty(textBoxBikeCode .Text))
            {
                identifiant.Year = textBoxYear .Text;
                identifiant.CarCode = textBoxCarCode .Text;
                identifiant.BikeCode = textBoxBikeCode .Text;
                lst.Add(identifiant); 
            }
        }

我尝试使用refresh,update更新datagridview中的显示,但没有任何效果。

datagridview与类的值绑定。

谢谢。

1 个答案:

答案 0 :(得分:1)

如果您没有大量数据,可以将其存储在csv文件中。 添加新值时,可以使用File.AppendAllLines来避免重写文件

快速而肮脏

public class Vehicule
{
    public int Year { get; set; }
    public int CarCode { get; set; }
    public int BikeCode { get; set; }

    public override string ToString()
    {
        return string.Format("{0},{1},{2}", Year, CarCode, BikeCode);
    }
}

public class FileStorage
{
    public List<Vehicule> GetVehicules(string filePath)
    {
        return File.ReadAllLines(filePath).Select(s => s.Split(',')).Select(split => new Vehicule
        {
            Year = int.Parse(split[0]),
            CarCode = int.Parse(split[1]),
            BikeCode = int.Parse(split[2])
        }).ToList();
    }

    public void WriteVehicules(string filePath, IEnumerable<Vehicule> vehicules)
    {
        File.WriteAllLines(filePath, vehicules.Select(s => s.ToString()));
    }
}

还有非常好的nuget包可以轻松操作CSV;)