Déplacer et remplacer un objet à l'infini en VB [Résolu/Fermé]

Signaler
Messages postés
156
Date d'inscription
samedi 31 octobre 2015
Statut
Membre
Dernière intervention
3 juillet 2018
-
Messages postés
156
Date d'inscription
samedi 31 octobre 2015
Statut
Membre
Dernière intervention
3 juillet 2018
-
Bonjour,

Je travaille en se moment sur une application "simple" à utiliser, mais pas autant à programmer, voici le sujet puis mon problem :

Sur mon application, il est possible de déplacer des picturbox ayant la forme d'un cube(minecraft dans ce cas, en 2D)
jusque l, aucun sousis;

Ici, sa devien plus dificil, car j'ais mis un panel en guise de "boite à outil" dans l'interface, et le but serait que lorsque l'ons prend un "bloc" pour le déposer dans le décor, un autre le remplace, comme en dans l'interface en VB, quand on prend un bouton, une picturbox,... l'objet est déplacable à l'infini...

Voici le code de ma picturbox qui est déplacable :
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
        Dim lHwnd As Int32
        lHwnd = PictureBox1.Handle
        If lHwnd = 0 Then Exit Sub
        ReleaseCapture() 'A été déclarer
        SendMessage(lHwnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) ' A été déclarer
    End Sub


Et voici le code pour redoubler un objet (que je connais, mais dont je n'arrive pas à utiliser si c'est le bon code pour ça pour mon programme):
 Private Sub PictureBox1_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox1.Click
        Dim bloc1 As New PictureBox()
        bloc1.Image = PictureBox1.Image 'c'est donc la même image que la "vrai"
        Me.Panel1.Controls.Add(bloc1)
        bloc1.Show()

    End Sub



Voilà :D
Merci d'avoir pris la peine de lire un si gros message, mais j'ai chercher partout, et j'ai pas trouver...
Cordialement VANAUR

3 réponses

Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
265
Pour mémoriser les PictureBox crées, utilises une collection : List(of PictureBox)

Pour ajouter le code de gestion de déplacement, regardes AddHandler et RemoveHandler.
Ensuite, il te faudra utiliser le paramètre Sender pour agir sur le bon objet.
Messages postés
156
Date d'inscription
samedi 31 octobre 2015
Statut
Membre
Dernière intervention
3 juillet 2018
6
Merci d'avoir si vite répondu :)

-Mais quel est la difference entre VB "simple" et le VB.net ?
-Comment puis-je ''coder'' les conseils que tu m'as donner, je n'en ais jamais entendu parler...

-J'ai essayer avec un code donner par MSDN d'ajouter un déplacement :
AddHandler Obj.XEvent, AddressOf Me.XEventHandler

à mon profit :
AddHandler PictureBox.XEvent, AddressOf Me.PictureBox1

Mais ca ne fonctionne pas,...

Bref il ne me semble pas connaître les codes piste que tu m'as données, j'ai un peu chipoter mais, cela n'a rien fait, le programme m'affiche le message d'erreur.
Merci encore, et à bientôt :D
Cordialement VANAUR
Messages postés
14737
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
14 novembre 2020
265
Quand on parle de VB, c’est générique, ça peut être VB6, VBA, VBS, ou VB.NET.

Nommer tes contrôles avec un préfixe te permet de mieux les retrouver dans le code, pat exemple BtnValider est plus explicite que Button1.

Il faut mettre le nom de la sub de gestion de l'événement et le nom de l'événement, par exemple :
AddHandler PictureBox2.Click, AddressOf Me.PictureBox2_Click.
Messages postés
156
Date d'inscription
samedi 31 octobre 2015
Statut
Membre
Dernière intervention
3 juillet 2018
6
Merci pour tes conseils, maintenant, c'est plus claire et grâce à toi, j'ai pus chercher et trouver ce dont j'avais besoin, plus de clarté, ets...

Merci :D

Cordialement, VANAUR