2012-12-16 251 views
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); 
    } 
} 

回答

0

我不知道你想显示在这个数据是什么样的控制但你的方法可能只是返回的Customer列表,那么你可以添加到ListBoxListViewDataGrid

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()); 
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); 
    } 
} 

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