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.
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 :
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.
Partager