vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Panel verschieben die 2te 
Autor: Gizmo2011
Datum: 21.11.12 09:06

Hallo jungs,
mit diese Code kann man Prima mehrere Panels auf einer Form verschieben.

 Dim nStartPos As Point
    Dim nDragPos As Point
 
 
    Private Sub IrgendEinPanel_MouseDown(sender As Object, e As  _
    System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            Dim aElement As Panel = DirectCast(sender, Panel)
            nStartPos = aElement.Location
            nDragPos = aElement.PointToScreen(New Point(e.X, e.Y))
        End If
    End Sub
 
    Private Sub IrgendEinPanel_MouseMove(sender As Object, e As  _
    System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            Dim aElement As Panel = DirectCast(sender, Panel)
 
            Dim nCurPos As Point = aElement.PointToScreen(New Point(e.X, e.Y))
            Dim NewPos As New Point(nStartPos.X + nCurPos.X - nDragPos.X, _
              nStartPos.Y + nCurPos.Y - nDragPos.Y)
            Dim r As Rectangle = aElement.Bounds
            r.X = NewPos.X
            r.Y = NewPos.Y
 
            Dim have_to_move As Boolean = True
 
            For Each element In Me.Controls.OfType(Of Panel)()
                If Not element Is DirectCast(sender, Control) Then
                    If r.IntersectsWith(element.Bounds) Then have_to_move = _
                      False
                End If
 
            Next
 
            'ist ja nur für den Form Rand gedacht damit es nicht drüber raus 
            ' gezogen werden kann 
            If NewPos.X < 1 Then NewPos.X = 1
            If NewPos.X > 599 Then NewPos.X = 599
            If NewPos.Y < 1 Then NewPos.Y = 1
            If NewPos.Y > 367 Then NewPos.Y = 367
 
            If have_to_move Then aElement.Location = NewPos
 
        End If
    End Sub
 
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) _
      Handles MyBase.Load
        For Each element In Me.Controls.OfType(Of Panel)()
            AddHandler element.MouseMove, AddressOf IrgendEinPanel_MouseMove
            AddHandler element.MouseDown, AddressOf IrgendEinPanel_MouseDown
        Next
    End Sub
Nun möchte ich das ganze etwas ändern. Wenn das erste Panel verschoben wird und auf das 2te geschoben wird dann soll das 2te an die Position des ersten springen. Ich denke es ist möglich allerdings weiß ich noch nicht so recht wie. Mit der obigen Methode habe ich ein sehr guter Anfang. Aber wie bekomme ich die Position des 2ten Panels heraus. Bisher bekomme ich ja nur die Position des 1ten Panel mit und zwar die Start Position und die ablage Position aber ich muss ja denke ich zumindest auch die Position des 2ten mitbekommen

MFG Gizmo

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Panel verschieben die 2te1.268Gizmo201121.11.12 09:06

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel