Accéder à un objet créé dynamiquement
bonjour,
je débute un peu dans la POO et je galère un peu avec mon code
je dois concevoir un logiciel dans le même style que visual studio visuellement parlant, je dois faire une barre d'outil sur le coté avec des objets à ajouter dans la form main principale, l'objet(i) s'affiche graphiquement sous forme d'une image(i), quand je double clique sur l'image(i), je dois avoir les paramètres de l'objet(i) qui s'affiche dans une form(i). Dans cette form(i) j'ai un bouton qui "hide" (cache) la form(i) pour revenir sur la form main.
Je crée mes objet(i), mes image(i) et mes form(i) dynamiquement :
Code:
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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| dim o as objet
dim image as picturebox
dim form0 as form
dim i as integer = 0
Private Sub b_CréerObjet_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles b_CréerObjet.Click
i += 1
'création d'un nouvel objet
o = New objet
o.name = "objet" & "(" & i & ")"
'Création d'une image objet
image = New PictureBox
With image
.Name = "image" & "(" & i & ")"
.ClientSize = New Size(80, 80)
.SizeMode = PictureBoxSizeMode.StretchImage
.ImageLocation = "...\ismart.jpg"
.Top = 71
.Left = 420
End With
AddHandler image.MouseDown, AddressOf PictureBox_MouseDown
AddHandler image.MouseMove, AddressOf PictureBox_MouseMove
AddHandler image.DoubleClick, AddressOf PictureBox_DoubleClick
Me.Controls.Add(image)
'création et affichage de la form
form0 = New ParametreAutom
form0.Name = "form " & "(" & i & ")"
form0.Text = "Ajouter un objet"
form0.Show()
End Sub
#Region "Evènements sur les objets"
'les 2 évènements suivant permettent de déplacer une image avec la souris
Dim x As Integer
Dim y As Integer
Private Sub PictureBox_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
x = e.X
y = e.Y
End If
End Sub
Private Sub PictureBox_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
If e.Button = Windows.Forms.MouseButtons.Left Then
sender.Left += (e.X - x)
sender.Top += (e.Y - y)
End If
End Sub
'cet évènement doit ouvrir la form de paramètre de l'objet concerné par le doubleclick
'fen.show() m'ouvre la dernière form crée et pas la form de l'objet concerné par le doubleclick
'je ne sais pas comment accéder à la form de l'objet concerné par le le doubleclick
Private Sub PictureBox_DoubleClick(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)
form0.show()
End Sub
#End Region |
pour mon problème tout est dit dans le code en commentaire sur la dernière sub des évènements à la fin
par exemple je crée un objet1 avec une image1 qui m'ouvre un form1, je crée un objet2 avec une image2 qui m'ouvre une form2
je hide form1 et form2, quand je doubleclick sur image1 ça m'ouvre form2 et pas form1 ...
comment accéder à un objet instancié dynamiquement sachant qu'il n'existe pas encore et comment connaître son nom ?
sinon comment "lier" la form et l'image à l'objet instancié ? dans la class objet ?