Public Event ClickMiddle (sender As Object, e As System.EventArgs)
Dans la procédure qui lance l'évenement ClickMiddle
RaiseEvent ClickMiddle (Me, New System.EventArgs)
Dans ton panel :
Dim uc As New cUserControl
AddHandler uc.ClickMiddle, AdressOf UCsClickMiddle
colUC.Add(uc)
colUC(colUC.Count - 1).Top = e.Y
colUC(colUC.Count - 1).Left = e.X
Panel.Controls.Add(colUC(colUC.Count - 1))
Dans ton form :
Private Sub UCsClickMiddle (sender As Object, e As System.EventArgs)
Dim UC As cUserControl = Sender'Récupère l'objet
Dim Index As Integer = Panel.Controls.IndexOf (UC) 'Récupère l'index dans la collection de ton panel si besoin est
End Sub
Je suis d'accord sur tes principes mais je ne peux pas mettre en place ces solutions !
J'ai du mal m'exprimer :
Si tu préfères, mes controls sont en dynamique via un clique sur un panel de ma main form [code behind de ma form]
Dim uc As New cUserControl
colUC.Add(uc )
colUC(colUC.Count - 1).Top = e.Y
colUC(colUC.Count - 1).Left = e.X
Panel.Controls.Add(colUC(colUC.Count - 1))
Tout simplement.
Ensuite j'ai mes event des déplacement et de redimension via :
Private Sub UC_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
Dim NewLoc As New Point
Select Case e.Button
'--déplacement
Case Windows.Forms.MouseButtons.Left
NewLoc.X = Me.Location.X + (e.X - InitLocation.X)
NewLoc.Y = Me.Location.Y + (e.Y - InitLocation.Y)
Me.Location = NewLoc
......
End select
Et donc sur ma form principale, j'ai Private colEntite As New List(Of cEntite)
Qui est la collection de mes contrôles.
Et somme, je ne vois pas du tout comment réaliser le code que tu m'a fournit soit le problème est bien là !
Ah oui, heu... pour répondre à ta question c'est pour le Fun...
Non je plaisante, en fait c'est pour avoir un 'Standard' de procédure ainsi tu peu faire par exemple :
Dim uc As New cUserControl
AddHandler uc.ClickMiddle, AddressOf UCsClickMiddle
Dim btn As New Button
AddHandler btn.Click, AddressOf UCsClickMiddle
Les événements de deux types de contrôles différents déclanchement la même procédure, cela n'est possible que si le schema de paramètre est identique pour les deux contrôles, si tu essaye par exemple :
Dim uc As New cUserControl
AddHandler uc.ClickMiddle, AddressOf UCsClickMiddle
Dim btn As New Button
AddHandler btn.MouseMove, AddressOf UCsClickMiddle
Haaa le mec il pourris le site de com pour gagner du points Haha
Merci pour ces infos, la migration m'est difficile mais agréable sur le fait que grâce au framework, on gagne un temps de développement fou et que le code est plus performant étant donné que les APIs win sont appelées par les méthodes de framework.