1

我希望当我单击“列出所有客户”按钮时,代码应该读取 Customer.csv 文件并在名为“列出所有客户”的表单上显示信息。

我怎样才能做到这一点?

public static void ReadFile()
{
    StreamReader sr = File.OpenText("Customer.csv");
}

public static void LoadCustomers()
{
    try
    {
        if (File.Exists("Customer.csv"))
        {
            string temp = null;
            int count = 0;

            using (StreamReader sr = File.OpenText(@"Customer.csv"))
            {
                while ((temp = sr.ReadLine()) != null)
                {
                    temp = temp.Trim();
                    string[] lineHolder = temp.Split(',');
                    Customer tempCust = new Customer();
                    tempCust.customerName = lineHolder[0];
                    tempCust.customerAddress = lineHolder[1];
                    tempCust.customerZip = Convert.ToInt32(lineHolder[2]);
                    myCustArray[count] = tempCust;
                    count++;
                }//end for loop
            }
        }
        else
        {
            File.Create("Customer.csv");
        }
    }
    catch (Exception e)
    {
        System.Windows.Forms.MessageBox.Show("File Loading Error: " + e.Message);
    }
}
4

2 回答 2

0

我不确定您要在哪种控件中显示此数据,但您的方法可能只返回一个列表Customer,然后您可以添加到一个ListBoxListView或者DataGrid

public static IEnumerable<Customer> LoadCustomers(string filename)
{
    if (File.Exists(filename))
    {
        foreach (var line in File.ReadAllLines(filename).Where(l => l.Contains(',')))
        {
            var splitLine = line.Split(',');
            if (splitLine.Count() >= 3)
            {
                yield return new Customer
                {
                    customerName = splitLine[0].Trim(),
                    customerAddress = splitLine[1].Trim(),
                    customerZip = Convert.ToInt32(splitLine[2].Trim())
                };
            }
        }
    }
}

列表框

 listBox1.DisplayMember = "customerName";
 listBox1.Items.AddRange(LoadCustomers(@"G:\Customers.csv").ToArray());
于 2012-12-16T05:42:02.827 回答
0

首先,利用列表对象:

public static void ReadFile()
{
    StreamReader sr = File.OpenText("Customer.csv");
}

public static void LoadCustomers()
{
    try
    {
        if (File.Exists("Customer.csv"))
        {
            string temp = null;
            var retList = new List<Customer>();
            using (StreamReader sr = File.OpenText(@"Customer.csv"))
            {
                while ((temp = sr.ReadLine()) != null)
                {
                    temp = temp.Trim();
                    string[] lineHolder = temp.Split(',');
                    retlist.add(new Customer(){
                      customerName = linerHolder[0],
                      customerAddress = lineHolder[1],
                      customerZip = Convert.ToInt32(lineHolder[2])
                    });
                }//end for loop
            }
        }
        else
        {
            File.Create("Customer.csv");
        }
    }
    catch (Exception e)
    {
        System.Windows.Forms.MessageBox.Show("File Loading Error: " + e.Message);
    }
}

只需将其包装在一个类中,从控制器调用 if 并填充结果。根据您更新此数据的频率,您可能会考虑缓存它,因此您不必每 X 秒为每个用户运行此过程。

于 2012-12-16T05:42:49.050 回答