Panel mit Click-Event in Form bewegen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von joshi97.

    Panel mit Click-Event in Form bewegen

    Hallo Leute,
    ich hätte da mal eine Frage weiß jemand wie der code heißt mit dem man ein Panel
    in einer Form mit dem

    VB.NET-Quellcode

    1. Private Sub Notiz1_Click(sender As Object, e As System.EventArgs) Handles Notiz1.Click End Sub

    click-Event bewegen kann

    Vielen Dank im voraus
    joshi

    VB.NET-Quellcode

    1. Private Sub Notiz1_Click(sender As Object, e As System.EventArgs) Handles Notiz1.Click
    2. Dim ll = Button1.Location
    3. ll.X += 10
    4. Button1.Location = ll
    5. End Sub
    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!

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. Private Sub Notiz1_Click(sender As Object, e As System.EventArgs) Handles Notiz1.Click
    2. Dim ll = Button1.Location
    3. ll.X += 10
    4. Button1.Location = ll
    5. End Sub
    Sorry wenn ich es falsch formuliert habe ich meine zum BSP. mit mousedown event also wie wenn ich eine form bewege und nicht wenn ich drauf klicke das dann das Panel sich bewegt ich möchte nämlich eine notiz so erstellen aber in einer vollbild-form darin dann das panel als Notiz bewegen wenn ich irgentwo auf das panel klicke
    Danke trotzdem vorerst
    Mal sehen, ob ich Dich richtig verstanden habe:
    Ich (Du natürlich) habe ein Programm im Vollbild. Wenn ich mit der Maus da reinklicke, soll ein (vorhandenes) Panel an genau der Stelle erscheinen, wo ich hingeklickt habe.

    VB.NET-Quellcode

    1. Private Sub Form1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    2. Panel1.Location = e.Location
    3. End Sub

    Wenn Du ein neues Panel ersgtellen willst, ist da noch ein wenig mehr zu tun.
    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 glaube erst meint noch was anderes ;)
    soweit ich es verstanden habe, soll das panel mit der Maus willkürlich verschoben werden können, oder?
    nun dazu musste live die mausposition auslesen, wenn auf das panel geklickt wird und dann die Position des panels anpassen, such mal bei Google nach mmvisual Basic mausposition ;)
    Falls ja: Nimm mein letztes Beispiel und trage den Code in das MouseMove-Event ein.
    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!

    Also..... Anhang

    Also ich habe ein Bild als Anhang wo ich erkläre wie ich es meine

    VB.NET-Quellcode

    1. Private Sub Notiz1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Notiz1.MouseClick
    2. End Sub


    VB.NET-Quellcode

    1. Private Sub Notiz1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Notiz1.MouseDown
    2. Dim p As New Point(Cursor.Position.X, Cursor.Position.Y) '*
    3. Notiz1.Location = p
    4. End Sub





    *Der Code ist aber eher damit man eine Form neben dem Cursor hat
    @joshi97: Wer lesen kann, ist im Vorteil.
    Probiere bitte in einem kleinen Testprogramm folgende beiden Zeilen aus:

    VB.NET-Quellcode

    1. Private Sub Form1_MouseDown(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    2. 'Button1.Location = New Point(Cursor.Position.X, Cursor.Position.Y)
    3. Button1.Location = e.Location
    4. End Sub
    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!

    ErfinderDesRades schrieb:

    Hi nein ich meine ein Panel dort ist eine Textbox und 2 Label drinnen und dann möchte ich das Panel frei bewegen können in der Form versteht sich wenn ich auf eine freie Stelle klicke


    @joshi97: Wer lesen kann, ist im Vorteil.Probiere bitte in einem kleinen Testprogramm folgende beiden Zeilen aus:

    Visual Basic Quellcode

    1 Private Sub Form1_MouseDown(sender As System.Object, e 2 As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
    3 'Button1.Location = New Point(Cursor.Position.X, Cursor.Position.Y)
    4 Button1.Location = e.Location
    5 End Sub


    Auch an dich wenn ich dies probiere kommt der button ja dahin wo ich klicke aber ich möchte WIE EINE FORM das Panel bewegen können

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

    MySide schrieb:

    Ich glaube erst meint noch was anderes ;)
    soweit ich es verstanden habe, soll das panel mit der Maus willkürlich verschoben werden können, oder?
    nun dazu musste live die mausposition auslesen, wenn auf das panel geklickt wird und dann die Position des panels anpassen, such mal bei Google nach mmvisual Basic mausposition ;)



    les es dir bitte nochmal durch ;)
    @joshi97: Irgendwie reden wir alle aneinander vorbei.
    Solange Du Dein Problem nicht korrekt rübergebracht hast, hat das Aufschreiben von Code-Snippets absolut keinen sinn.
    Also:
    - Du willst ein Objekt anfassen und auf der Form mit der Maus bewegen?
    - Du willst klicken und ein vorhandenes Objekt soll da positioniert werden?
    - Du willst klicken und ein neues Objekt soll da positioniert werden?
    oder noch was ganz anderes?
    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!

    Zum Mitdenken

    Also nochmal zum Mitdenken


    • ich habe eine Form (siehe bild)
    • Dort ist ein Panel mit [2labels und einer textbox] (Also alles in einem) (siehe Bild)

    • So jetzt möchte ich auf eine freie Fläche des Panels klicken und auch halten
    • und dann auch die maus in der Form bewegen
    • Also das dieses Panel(Notiz1) in der Form bewegen und beliebeig platzieren (wie wenn man eine Form bewegt)





    wenn jetzt noch immer niemand weiß was ich meine schreib nachricht


    Achtung in diesem Bild sind Notiz 1 und 2 eingekreist meine aber nur notiz 1
    Und Notiz 1 und Notiz 2 sind eigene Panel

    ErfinderDesRades schrieb:

    post#11 nochmal genau lesen. Vlt auch mal auf den Link klicken.


    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _GrabOffs As Size
    3. Private _PBoxes As PictureBox()
    4. Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
    5. 'funzt mit allen Controls
    6. Dim toDrag = DirectCast(sender, Control)
    7. _GrabOffs = New Size(Control.MousePosition) - New Size(toDrag.Location)
    8. toDrag.Parent.Controls.SetChildIndex(toDrag, 0)
    9. End Sub
    10. Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
    11. 'funzt mit allen Controls
    12. If e.Button <> MouseButtons.Left Then Return
    13. Dim toDrag = DirectCast(sender, Control)
    14. RemoveHandler toDrag.MouseMove, AddressOf Control_MouseMove
    15. toDrag.Location = Control.MousePosition - _GrabOffs
    16. AddHandler toDrag.MouseMove, AddressOf Control_MouseMove
    17. End Sub
    18. Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    19. _PBoxes = Me.Controls.OfType(Of PictureBox)().ToArray
    20. For Each pb In _PBoxes
    21. AddHandler pb.MouseDown, AddressOf Control_MouseDown
    22. AddHandler pb.MouseMove, AddressOf Control_MouseMove
    23. Next
    24. End Sub
    25. End Class


    Das ist dein Code aber ich habe keine PictureBox sondern Panel muss ich also überall von PicureBox steht Panel schreiben ??? ?(

    ErfinderDesRades schrieb:

    ja, was denkstn du?

    Der Post heißt "Controls draggen", und das Draggen von Controls ist am Beispiel von Pictureboxen ausgeführt.
    Ich kann das doch nicht ausführen, für jedes Control, wasses gibt.



    Also ich habe es Probiert und weiß aber nicht wie es gehen soll kannst du den code vlt für Panels noch mal machen bitte ???

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private _GrabOffs As Size
    3. Private _PBoxes As Panel()
    4. Private Sub Control_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
    5. 'funzt mit allen Controls
    6. Dim toDrag = DirectCast(sender, Control)
    7. _GrabOffs = New Size(Control.MousePosition) - New Size(toDrag.Location)
    8. toDrag.Parent.Controls.SetChildIndex(toDrag, 0)
    9. End Sub
    10. Private Sub Control_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs)
    11. 'funzt mit allen Controls
    12. If e.Button <> MouseButtons.Left Then Return
    13. Dim toDrag = DirectCast(sender, Control)
    14. RemoveHandler toDrag.MouseMove, AddressOf Control_MouseMove
    15. toDrag.Location = Control.MousePosition - _GrabOffs
    16. AddHandler toDrag.MouseMove, AddressOf Control_MouseMove
    17. End Sub
    18. Private Sub Form_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    19. _PBoxes = Me.Controls.OfType(Of Panel)().ToArray
    20. For Each pb In _PBoxes
    21. AddHandler pb.MouseDown, AddressOf Control_MouseDown
    22. AddHandler pb.MouseMove, AddressOf Control_MouseMove
    23. Next
    24. End Sub
    25. End Class