Je veux charger les données à partir d’un fichier XML et les afficher dans la liste?

J’ai trois cours:

Le premier est la personne:

public class Person { public ssortingng FirstName { get; set; } public ssortingng LastName { get; set; } public ssortingng Email { get; set; } public Person() { } public override ssortingng ToSsortingng() { return FirstName + " " +LastName + "\t" +Email; } } 

Deuxième est:

  public class Student:Person { public Student() { } public double AssessmentGrade { get; set; } public double AssignmentGrade { get; set; } public override ssortingng ToSsortingng() { return base.ToSsortingng() + "," +AssessmentGrade + "," + AssignmentGrade; } } 

Troisième est:

  public class Teacher:Person { public int RoomNumber { get; set; } public override ssortingng ToSsortingng() { return base.ToSsortingng() + "," + RoomNumber; } } 

J’ai encore une classe où je viens d’appeler les données de PeronDB (Class)

  public class Persons { private List persons = null; public void Fill() { persons = PersonDB.GetPersons(); } } 

Je fais la classe InPersonDB si son nœud Étudiant lise ensuite les données si ses nœuds Enseignant lisent également les données et, le cas échéant, lit également les données.

  public class PersonDB { private const ssortingng path = @"..\..\Persons.xml"; public static List GetPersons() { List persons = new List(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = true; settings.IgnoreComments = true; XmlReader xmlIn = XmlReader.Create(path, settings); if (xmlIn.ReadToDescendant("Student")) { do { Person person = new Person(); Student student = (Student)person; xmlIn.ReadStartElement("Student"); student.FirstName = xmlIn.ReadElementContentAsSsortingng(); student.LastName = xmlIn.ReadElementContentAsSsortingng(); student.Email = xmlIn.ReadElementContentAsSsortingng(); student.AssessmentGrade = xmlIn.ReadElementContentAsInt(); student.AssignmentGrade = xmlIn.ReadElementContentAsInt(); persons.Add(student); } while (xmlIn.ReadToNextSibling("Student")); } else if (xmlIn.ReadToDescendant("Teacher")) { do { Person person = new Person(); Teacher teacher = (Teacher)person; xmlIn.ReadStartElement("Teacher"); teacher.FirstName = xmlIn.ReadElementContentAsSsortingng(); teacher.LastName = xmlIn.ReadElementContentAsSsortingng(); teacher.Email = xmlIn.ReadElementContentAsSsortingng(); teacher.RoomNumber = xmlIn.ReadElementContentAsInt(); persons.Add(teacher); } while (xmlIn.ReadToNextSibling("Teacher")); } if (xmlIn.ReadToDescendant("Person")) { do { Person person = new Person(); xmlIn.ReadStartElement("Person"); person.FirstName = xmlIn.ReadElementContentAsSsortingng(); person.LastName = xmlIn.ReadElementContentAsSsortingng(); person.Email = xmlIn.ReadElementContentAsSsortingng(); persons.Add(person); } while (xmlIn.ReadToNextSibling("Person")); } xmlIn.Close(); return persons; } } 

Et dans le formulaire, je fais:

  Persons personList = null; private void FillPersonlstBox() { Person p; listBox1.Items.Clear(); for (int i = 0; i < personList.Count; i++) { p = personList[i]; listBox1.Items.Add(p.ToString()); } } private void Load_Click(object sender, EventArgs e) { personList.Changed += new Persons.ChangeHandler(HandleChange); personList.Fill(); FillPersonlstBox(); } 

Il me montre dans ** personList.Changed + = new Persons.ChangeHandler (HandleChange); ** cette erreur de ligne.Il me montre “Référence d’object non définie à une instance d’object.” cette erreur. S’il vous plaît, aidez-moi, comment y remédier?

À un moment donné, vous devez instancier personList .

Dans votre code, vous ne pouvez pas gérer l’événement Changed sur personList car il est toujours nul.

Donc au lieu de

 Persons personList = null; 

Peut-être essayer

 Persons personList = new Persons();