bonjour tout le monde ,
je viens vers vous pour me guider dans un choix je suis débutant et je ne sais pas si je part sur la bonne solution.
j'ai simplifier pour expliquer j'ai une class Codeseti avec une list de projets qui contient des class projet
dans le projet j'ai une list de dérogations qui contient des dérogation etc... avec référence et Amdt
si vous avez compris ce que je veux faire c'est ranger mes données comme un treedview
j'ai simplifié le code pour exposer :
j'utilise un BindingSource pour chaque class projet,désignation,référence etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Public Class Codeseti Public Projets As New List(Of Projet)() End Class <Serializable()> Public Class Projet Inherits Nom Public Désignations As New List(Of Désignation)() End Class <Serializable()> Public Class Désignation Inherits Nom Public Désignations As New List(Of Désignation)() End Class <Serializable()> Public Class Désignation Inherits Nom Public Références As New List(Of Référence)() End Class <Serializable()> Public Class Nom Private _Nom As String Public Sub New(ByVal val As String) _Nom = val End Sub Public Sub New() End Sub Public Property Nom() As String Get Nom = _Nom End Get Set(ByVal value As String) _Nom = value End Set End Property End Class
et je met a jour chaque bindingsource a chaque fois que CurrentItemChanged
le problème c'est que j'ai une l'erreur suivante dans certain cas
L'index était hors limites. Il ne doit pas être négatif et doit être inférieur à la taille de la collection.
Nom du paramètre*: index
cela fonctionne si je catch l'erreur mais je ne trouve pas ca propre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 Public Class FormPrincipal Private objDoc As New Codeseti Private Sub FormPrincipal_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load BindingSourceProjet.DataSource = objDoc.Projets End Sub Private Sub BindingSourceProjet_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingSourceProjet.CurrentItemChange Try Dim PosiProjet As Integer = BindingSourceProjet.Position BindingSourceDésignation.DataSource = objDoc.Projets.Item(PosiProjet).Désignations Catch ex As Exception Console.writeLine(ex.Message) End Try End Sub Private Sub BindingSourceDésignation_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles BindingSourceDésignationt.CurrentItemChanged Try Dim PosiProjet As Integer = BindingSourceProjet.Position Dim PosiDési As Integer = BindingSourceDésignation.Position BindingSourceRéférence.DataSource = objDoc.Projets.Item(PosiProjet).Désignations.Item(PosiDési).Références Catch ex As Exception Console.writeLine(ex.Message) End Try End Sub Private Sub BindingSourceRéférence_CurrentItemChanged(ByVal sender As Object, ByVal e As System.EventArgs)Handles BindingSourceRéférence.CurrentItemChanged Try Dim PosiProjet As Integer = BindingSourceProjet.Position Dim PosiDési As Integer = BindingSourceDésignation.Position Dim PosiRéf As Integer = BindingSourceRéférence.Position BindingSourceAmdt.DataSource = objDoc.Projets.Item(PosiProjet).Désignations.Item(PosiDési).Références.Item(PosiRéf).Amdt Catch ex As Exception Console.writeLine(ex.Message) End Try End Sub End Class
Ma question est ce qu'il y a pas une solution plus simple à mon problème je suis peut être mal partie.
Je me complique peut être la vie ?
j'ai mit le le fichier Zip du projet si vous voulez.
Peut être qu'il ne faut pas trop imbriquer de list dans des list etc....
merci d'avance pour vos réponses .![]()
Partager