Kerlouan29
Messages postés7Date d'inscriptionsamedi 13 novembre 2010StatutMembreDernière intervention25 juin 2011
-
21 déc. 2010 à 02:14
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 2023
-
21 déc. 2010 à 16:47
Bonjour
JE tente de terminer une application qui me permettra de valider chez mes élèves des competences.
Dans mon application, j'ai modifié entièrement ma façon de sauvegarder: je suis passé de fichier txt à des fichiers xml.
Hélas maintenant ca ne fonctionne plus :(
En lançant j'ai une erreur NullReferenceException: cela se passe quand j'essaye de définir le contenu d'une variable.
Pour être plus précis voici les bouts de code:
Les classes utilisées:
Classe EleveBis:
<Serializable()>
Public Class EleveBis
Property NomEleve As String = ""
Property Prenom As String = ""
Property Classe As String = ""
Property Parties As List(Of SousPartie)
Sub New()
End Sub
End Class
Classe SousPartie:
<Serializable()>
Public Class SousPartie
Property NomSousPartie As String = ""
Property Themes As List(Of Theme)
Sub New()
End Sub
End Class
Classe Theme:
Serializable()>
Public Class Theme
Property Nom As String = ""
Property ListeDesCompetences As List(Of CompetenceBis)
Sub New()
End Sub
End Class
Classe CompetenceBis:
<Serializable()>
Public Class CompetenceBis
Property Nom As String = ""
Property Succes As Byte = 0
Property Total As Byte = 0
Sub New()
End Sub
End Class
Je souhaite lorsque j'entre le nom d'un nouvel élève, enregistrer dans sa fiche les SousParties/themes/Competences.
Pour cela j'ai codé ceci:
Dim j As Integer
Dim k As Integer
Dim l As Integer
With NouvelEleve
.NomEleve = TXT_AjoutEleveNom.Text.ToUpper
.Prenom = TXT_AjoutElevePrenom.Text
.Classe = TXT_AjoutEleveClasse.Text
End With
For j = 0 To SousPartiesTampon.Count - 1
Dim SouspartieEleve As New SousPartie
Dim ThemeEleve As New Theme
Dim CompetenceBisEleve As New CompetenceBis
SouspartieEleve.NomSousPartie = SousPartiesTampon(j).NomSousPartie
For k = 0 To SousPartiesTampon(j).Themes.Count - 1
ThemeEleve.Nom = SousPartiesTampon(j).Themes(k).Nom
For l = 0 To SousPartiesTampon(j).Themes(k).ListeDesCompetences.Count - 1
With CompetenceBisEleve
.Nom = SousPartiesTampon(j).Themes(k).ListeDesCompetences(l).Nom
.Succes = 0
.Total = 0
End With
ThemeEleve.ListeDesCompetences.Add(CompetenceBisEleve)
Next l
SouspartieEleve.Themes.Add(ThemeEleve)
Next k
NouvelEleve.Parties.Add(SouspartieEleve)
Next j
CreationListeClasse(TXT_AjoutEleveClasse.Text)
Cela bloque à la ligne:
ThemeEleve.ListeDesCompetences.Add(CompetenceBisEleve)
J'ai essayé un truc plus simple pour voir:
With NouvelEleve
.NomEleve = TXT_AjoutEleveNom.Text.ToUpper
.Prenom = TXT_AjoutElevePrenom.Text
.Classe = TXT_AjoutEleveClasse.Text
End With
Dim SouspartieEleve As New SousPartie
Dim ThemeEleve As New Theme
Dim CompetenceBisEleve As New CompetenceBis
With CompetenceBisEleve
.Nom = "HELLO"
.Succes = 0
.Total = 0
End With
ThemeEleve.ListeDesCompetences.Add(CompetenceBisEleve)
Pareil, la ligne " ThemeEleve.ListeDesCompetences.Add(CompetenceBisEleve)" pose un problème. :(
Je pense avoir rempli la variable CompetencebisEleve: pourquoi ne puis_je pas l'ajouter à la variable Thème qui contient une liste de cete variable?
Si je me contente de rentrer le nom, prenom et classe cela fonctionne.
Dès que je passe aux listes,..... erreur.
Si quelqu'un peut m'expliquer mon erreur, je lui en serais reconnaissant car je ne vois pas l'origine de mon souci.
Merci :)
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 20234 21 déc. 2010 à 16:47
Public Class CompetenceBis
Property Nom As String
Property Succes As Byte
Property Total As Byte
Sub New()
Me.Nom = ""
Me.Succes = 0
Me.Total = 0
End Sub
End Class
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim CompetenceBisEleve As New CompetenceBis With {.Nom "HELLO", .Succes 0, .Total = 0}
Me.ListBox1.Items.Add(CompetenceBisEleve.Nom)
End Sub