2016-04-13 16 views
1

Ich arbeite an einer Aufgabe, in der ich die ComboBox durch Liste füllen muss und die Liste von employee.dat Datei auffüllt. Ich bin erfolgreich in der Combo, aber während ich es sortiere, stehe ich vor einem Problem. Die Werte, die ich sortieren möchte, sind String-Nummern. Es zeigt die Werte von 0-9, aber wenn es jenseits von 9 erscheint, sieht die Combo doof aus.Problem beim Sortieren von Kombinationsfeld

Hier ist der Screenshot

enter image description here

Was ich brauche diese Werte Art zu tun, Mittel 10 sollte hier um 9.

führen ist, um das Code-Schnipsel, die ich noch nicht ausprobiert haben.

  private void FormDelete_Load(object sender, EventArgs e) 
    { 
     //LOAD EVENT for FORM 

     //Clear all form controls 
     Reset(); 

     //Fill the ID Combo box using data in List<T> 
     comboBoxID.Items.Clear(); 
     foreach (MyClass.Employee obj in MyClass.listEmployees) 
     { 
      comboBoxID.Items.Add(obj.ID); 
     } 

     //Sort the combo box ibn ascending order 
     comboBoxID.Sorted = true; 

    } 

Employee.cs

public class Employee 
    { 
     public int ID; 
     public string fName; 
     public string lName; 
     public string gender; 
     public int age; 
     public double hourWage; 

    } 
    public static List<Employee> listEmployees = new List<Employee>(); 

Empolyee.dat

1, Ann, Crowe, F, 34, 12.95 
2, Bob, Costas Jr., M, 27, 8.75 
3, Sue, Soppala, F, 22, 7.95 
4, Bill, Barton, M, 45, 15.25 
5, Jill, Jordan, F, 33, 14.75 
6, Art, Ayers, M, 33, 14.75 
7, Larry, Stooge, M, 55, 21.05 
8, Art, Ayers, M, 33, 14.75 
9, Larry, Stooge, M, 55, 21.05 
10, Art, Ayers, M, 33, 14.75 
11, Larry, Stooge, M, 55, 21.05 

Liste Bestücken Code

if (File.Exists("employee.data")) 
     { 
      try 
      { 
      streamEmployee = new StreamReader("employee.data"); 
      string line; //to read a line from the text file 
      string[] arrFields = new string[5]; 
      while (streamEmployee.Peek() > -1) 
      { 
       line = streamEmployee.ReadLine(); //read a line of records  from file 
       arrFields = line.Split(','); //split the line at comma junction, and save split       //fields in array 

       MyClass.Employee objEmp = new MyClass.Employee(); //create a "specific" employee          //object instance 

       //Assign each field from line as generic object's properties to make it "specific 
       objEmp.ID = Convert.ToInt32(arrFields[0].Trim()); //ID is integer 
       objEmp.fName = arrFields[1].Trim(); 
       objEmp.lName = arrFields[2].Trim(); 
       objEmp.gender = arrFields[3].Trim(); 
       objEmp.age = Convert.ToInt32(arrFields[4].Trim()); //age is integer 
       objEmp.hourWage = Convert.ToDouble(arrFields[5].Trim()); //hourly wage is double 

       //Add this specific employee object to the List 
       MyClass.listEmployees.Add(objEmp); 

      } //while 


     } //try 

     catch (IOException err) 
     { 
      MessageBox.Show(err.Message); 
      error = true; 

     } //catch 

     finally 
     { 
      if (streamEmployee != null) //it is indeed representing a file and may not be closed 
       streamEmployee.Close(); 


     } //finally 

    } //if 
+1

Ihre Datei ist bereits sortiert, wenn Sie die Sorted = True Zeile entfernen, haben Sie bereits die Elemente in der richtigen Reihenfolge – Steve

+1

@Steve Danke für Ihre Antwort Ich habe es versucht und es funktioniert. Was aber, wenn ich die Reihenfolge von meiner Eingabequelldatei ändere? Auskommentieren der sortierten Linie ist nicht die Lösung. –

+0

Gerade hinzugefügt eine Antwort speziell für diesen Fall – Steve

Antwort

3

Ihre Datei ist bereits sortiert, daher muss Sorted = true nicht aufgerufen werden.
Wie auch immer, wenn Sie sicher sein wollen, dass, was auch immer, um in der Eingabedatei vorhanden ist, fügt der Code die Mitarbeiter die ID, um folgende, dann könnten Sie Ihre Schleife

foreach (MyClass.Employee obj in MyClass.listEmployees.OrderBy(x => x.ID)) 
{ 
    comboBoxID.Items.Add(obj.ID); 
} 

wieder einzustellen keine Notwendigkeit zu ändern die sortierte Eigenschaft zu true ....

+0

Als Best Practice nicht von der Sortierreihenfolge der Eingabedatei abhängen. Der Grund ist, dass sich das Verhalten der Combobox ändert, wenn sich die Sortierung der Eingabedatei ändert. Stellen Sie sicher, dass Sie mit Ihrem Code umgehen. –

Verwandte Themen