2017-05-28 4 views
-1

Ich versuche, Daten in eine Listbox in einer Windows-Formularanwendung in C# zu laden. Ich habe Code aus meiner Hauptform, die die Daten auf die Listbox setzen wird wie folgt ...Laden einer Textdatei in eine Listbox

namespace HRApplication 
{ 
public partial class MainForm : Form 
{ 
    // The file used to store employee details 
    string employeesFile = "employees.txt"; 

    // The collection used to hold the employee data 
    Employees employees; 

    public MainForm() 
    { 
     InitializeComponent(); 
    } 

    private void MainForm_Load(object sender, EventArgs e) 
    { 
     employees = new Employees(); 
     if (!employees.Load(employeesFile)) 
     { 
      MessageBox.Show("Unable to load employees file"); 
     } 
     else 
     { 
      PopulateListBox(); 
     } 
    } 

    private void PopulateListBox() 
    { 
     listBoxEmployees.Items.Clear(); 

     foreach (Employee employee in employees) 
     { 
      listBoxEmployees.Items.Add(employee.lastName + ", " + 
     employee.firstName); 
     } 
     //listBoxEmployees.SelectedIndex = 0; 
    } 

von diesem Ich habe eine Klasse Mitarbeiter genannt, wo ich die Load-Methode zu bekommen versuche, hier zu arbeiten ist der Code, den ich Hätte und jede Hilfe wäre sehr hilfreich.

namespace HRApplication 
{ 
public class Employees : List<Employee> 
{ 

    public Employees() 
    { } 


    public bool Load(string employeesFile) 
    { 
     List<string> lines = new List<string>(); 

     using (StreamReader reader = new StreamReader("employees.txt")) 
     { 
      string line; 
      while ((line = reader.ReadLine()) != null) 
      { 
       lines.Add(line); 
      } 
      return true; 
      } 
     } 
    } 
} 
+0

Haben Sie vergessen, eine Frage zu stellen? Was ist falsch in deinem Code? – Steve

+0

Entschuldigung, es ist nicht in der Liste angezeigt und fragte warum? –

+0

Weil Sie eine Liste von Mitarbeitern durchlaufen, aber Sie fügen Ihre Zeilen zu einer Liste von Strings hinzu. Bitte fügen Sie den notwendigen Code der Employee-Klasse – Steve

Antwort

0

Angenommen, Ihre Employee-Klasse ist der Einfachheit halber ungefähr so.

public class Employee 
{ 
    public string lastName {get;set;} 
    public string firstName {get;set;} 
    public override string ToString() 
    { 
     return lastName + ", " + firstName; 
    } 
} 

Nun, wenn Sie eine Textzeile aus der Datei laden, sollten Sie es in die Teile geteilt, die die Mitarbeiterdaten darstellen. Verwenden Sie diese Daten eine Instanz der Mitarbeiter-Klasse zu erstellen und die Instanz der Basisklasse der Mitarbeiter hinzufügen (ein List<Employee>)

public bool Load(string employeesFile) 
{ 
    using (StreamReader reader = new StreamReader("employees.txt")) 
    { 
     string line; 
     while ((line = reader.ReadLine()) != null) 
     { 
      // Suppose that your line is splittable using a comma... 
      string[] temp = line.Split(','); 

      // This is really simplicistic. In a real world scenario 
      // you should check if the line contains correctly all the 
      // fields required to populate an Employee... 
      Employee emp = new Employee() 
      { 
       firstName = temp[0], 
       lastName=temp[1] 
      }; 

      // This class is derived from List<T> 
      // so you can use the Add method 
      // to add the employee to itself... 
      Add(emp); 
     } 
     return true; 
     } 
    } 
} 

An diesem Punkt der Schleife der listbox füllen sollten funktionieren (ich benutze den ToString() überladen, um das Gebäude des Textes für die ListBox zu verbergen)

private void PopulateListBox() 
{ 
    listBoxEmployees.Items.Clear(); 
    foreach (Employee employee in employees) 
    { 
     listBoxEmployees.Items.Add(employee); 
    } 
    //listBoxEmployees.SelectedIndex = 0; 
} 
+0

Hi übergeht. Ich musste das Komma zu einem | ändern So sind meine Daten aufgeteilt, aber es funktioniert jetzt korrekt. Vielen Dank!! –

Verwandte Themen