Mehrere Pictureboxen auswählen und in einer Picturebox bewegen.

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von KingTimon.

    Mehrere Pictureboxen auswählen und in einer Picturebox bewegen.

    Hallo Leute,
    ich bin ein absoluter neuling und möchte nur etwas kleines ''Programmieren''.
    Ich möchte 3 Pictureboxen ( PictureBox 1,2,3) in einer großen Picturebox ( PictureBox 4) bewegen, nur ich möchte halt jede einzelne der 3 Pictureboxen auswählen und dann mit der Maus bewegen können, also es sollen sich nicht alle 3 gleichzeitig bewegen.
    Hoffe ihr könnt mir weiter helfen hab schon gestern Abend den gazen Tag in eurem Forum versucht nach einer Lösung zu finden wurde aber leider nicht fündig.

    Hier ist der bisher geschriebene Code ( Ich benutze VB Express 2010 ) :

    Friend WithEvents ImageList1 As System.Windows.Forms.ImageList
    Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox

    Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox

    Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
    Friend WithEvents PictureBox3 As System.Windows.Forms.PictureBox
    Friend WithEvents PictureBox4 As System.Windows.Forms.PictureBox

    Private Sub PictureBox4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Private Sub LineShape4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub
    Friend WithEvents ShapeContainer1 As Microsoft.VisualBasic.PowerPacks.ShapeContainer
    Friend WithEvents RectangleShape1 As Microsoft.VisualBasic.PowerPacks.RectangleShape

    Private Sub PictureBox1_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

    End Sub

    Private Sub PictureBox1_MouseDown1(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs)

    End Sub

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs)


    End Sub

    Private Sub Form1_Load_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub
    Friend WithEvents Timer1 As System.Windows.Forms.Timer

    Public Class Form1

    End Class

    Private Sub Timer1_Tick_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick


    End Sub

    Private Sub PictureBox2_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click

    End Sub

    Private Sub PictureBox3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox3.Click

    End Sub
    End Class




    Mit freundlichen Grüßen,
    davidtrixx

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „davidtrixx“ ()

    @davidtrixx Willkommen im Forum. :thumbup:
    Ändere mal Dein Layout:
    Nimm ein großes Panel oder nimm nur die Form ohne großes Panel und pack da Deine 3 kleinen PictureBoxen rein.
    Fang am besten mit nur einer PictureBox an, gib ihr eine sichtbare BackColor.
    Und probier mal dieses nicht richtig funktionierende Beispiel aus.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private toMove As Boolean
    3. Private Sub PictureBox1_MouseDown(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseDown
    4. toMove = True
    5. End Sub
    6. Private Sub PictureBox1_MouseMove(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseMove
    7. If toMove Then
    8. PictureBox1.Location = e.Location
    9. End If
    10. End Sub
    11. Private Sub PictureBox1_MouseUp(sender As Object, e As MouseEventArgs) Handles PictureBox1.MouseUp
    12. toMove = False
    13. End Sub
    14. End Class
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    davidtrixx schrieb:

    diesen Code
    1. Dein Code ist VB.NET, nicht aber VB6. Ändere den Titel Deines Threads entsprechend.
    2. Das ist der vollständige nicht richtig funktionierende Code einer Form, die eine PictureBox enthält.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Erstmal ein großes Danke ! Zum Teil funktoniert es. Was jetzt mein Problem ist, es enstehen schlieren und und die PictureBox folgt nicht 1:1 der Maus und springt machmal aufeinmal komplett weg.

    Ich habs jetzt so geschrieben :

    Public Class Form1
    Private toMove As Boolean
    Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    toMove = True
    End Sub

    Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    If toMove Then
    PictureBox1.Location = e.Location
    End If
    End Sub

    Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    toMove = False
    End Sub
    End Class
    Bitte den [vbnet][/vbnet] Tag benutzen:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private toMove As Boolean
    3. Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown
    4. toMove = True
    5. End Sub
    6. Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
    7. If toMove Then
    8. PictureBox1.Location = e.Location
    9. End If
    10. End Sub
    11. Private Sub PictureBox1_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseUp
    12. toMove = False
    13. End Sub
    14. End Class


    davidtrixx schrieb:

    Was jetzt mein Problem ist

    RodFromGermany schrieb:

    dieses nicht richtig funktionierende Beispiel
    Jou.
    Such mal gezielt nach "Bewegen von Controls mit der Maus".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich hab mir controls gemacht, die kann man bewegen, größe verändern usw.

    Wenn du willst könnt ich dir da was zur Verfügung stellen
    Auf der Suche nach Coding-Kursen auf Lence.at

    davidtrixx schrieb:

    Klar, wäre Super
    sich alles vorkauen zu lassen und nicht die Suchfunktion zu benutzen. ;(

    RodFromGermany schrieb:

    Such mal gezielt nach "Bewegen von Controls mit der Maus".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ausserdem steckt da auch bissl simple mathematik hinter. angenommen du weidt wo der cursor im bezug auf die Form ist. Und du weist wo das Control (im Bezug auf dir Form) ist. Jetzt könntest du dir ausrechen ob a) der Cursor brim Click in dem Control ist, und b) Wo in dem. wenn du dann jetzt bei mouse move PunktA (vor der bewegung) minus PunktB (nach der Bewegung) rechnest hast du die veränderung der Position (des Cursors) und kannst dementsprechend die Position des Controls verändern.
    lg Marcel

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcel1997“ ()

    Eine leistungsfähiger Ansatz ist in StoryCards - verschiebbare Zeichenobjekte gezeigt.

    Also das ist OwnerDrawing, der professionelle Ansatz.
    Weil Controls herumdraggen tut man einfach nicht.

    Ich empfehle: machs richtig, oder such dir erstmal was leichteres. Denn wenn du dich mit Gurken-Ansätzen durchwurstelst, gewöhnst du dir nur Mist an, und kommst umso schwerer drauf, wies richtig geht.