Bonjour à toutes et à tous,

Je suis actuellement entrain de réaliser une logiciel qui affiche des images et des points sur des images, cela pour informer des actions à réaliser sur cette photo.
L'affichage des photos et des points sur cette photo, est fonction des données reçues par communication Ethernet.

Je présente mon projet :
Développement sous visual studion 2012 express en visual basic, sous le framework 4.5

- 1 Form main pour affichage des pictures et points
- 1 classe "Picture" user control contenant un picturebox
- 1 classe "Point" user control contenant un picturebox
- 1 Form "Toolbox" qui contiens les pictures et les points à déposer lur la form main
- 1 class "Ethernet" pour la gestion de ma communication.

Ajout de pictures sur la form main par drag and drop depuis la toolbox.
Ajout de points sur la class picture par drag and drop depuis la toolbox dans la collention "picturebox.controls".

Sauvegarde en fichier xml des pictures et des points, pour qu'a la réouverture du logiciel, on retrouve l'interface créée.

Lors du dragdrop de la picture, ajout d'un databinding :
- DataSource = la class ethernet
- Propriété = une list contenant mes données pour affichage de la photo.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
TmpSeqPicture.DataBindings.Add(New Binding("ArMid0035", OpClient, "ArMid0035", True, DataSourceUpdateMode.OnPropertyChanged))
Mon problème apparait lorsque le DataBinding set la propriété "ArMid0035" de ma class picture,
lors du set de la propriété, en fonction des données, je charge l'image à afficher, et je fait un clear des points de picturebox.controls et je charge les points voulus.

A ce moment, l'erreur suivante apparait :

Pièce jointe 170634

Ce que je ne comprend pas, c'est que lors du binding, j'ai bien accès à la picturebox de ma classe "picture", je peux loader l'image,
mais je n'ai pas accès à picturebox.controls.clear ou picturebox.controls.add ...

Ci joint, la procédure qui lève l'érreur :

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
 
    Private Sub ApAction_Changed(ByVal Ap_Action As Short)
        Dim ImagePath As String
        ImagePath = GetPictureInConfigurationFile(My.Settings.XmlFolderPath & "\" & Me.Name & "_Ap" & _ApNumber.ToString & "_Pictures.xml", "Action" & Ap_Action.ToString)
        If ImagePath <> "" Then
            If ImagePath <> PbPicture.ImageLocation Then
                Try
                    PbPicture.ImageLocation = ImagePath
                    PbPicture.Load()
                    PbPicture.Controls.Clear()
                    Dim SeqPoints As List(Of SeqPoint)
                    SeqPoints = New List(Of SeqPoint)
                    SeqPoints = GetSeqPointsInConfigurationFile(My.Settings.XmlFolderPath & "\" & Me.Name & "_Ap" & _ApNumber & "_Points.xml", Path.GetFileName(PbPicture.ImageLocation))
                    For Each TmpSeqPoint In SeqPoints
                        PbPicture.Controls.Add(TmpSeqPoint)
                    Next
                Catch ex As Exception
                    MsgBox(ex.Message)
                End Try
            End If
        Else
            PbPicture.ImageLocation = ""
            PbPicture.Image = My.Resources.LOGO_Desoutter
        End If
    End Sub
Merci à ceux qui auront pris le temps de me lire,
toutes vos réponses ou conseils concernant la gestion des threads me seront grandement utiles.