vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Ein- und Umsteiger
Re: Drag & Drop für alle Formularelemente 
Autor: webmatze
Datum: 15.11.08 18:14

Hallo Dieter,

danke für die schnelle Antwort, habe den Code abgeändert, da ich
es für Controls brauche die während der Laufzeit erstellt werden.

Dabei ist folgendes raus gekommen was richtig gut funktionier

Wenn noch irgendwer was zum verbessern hat bitte ich um INFO!

(Vorher zur info, im Form_load wird das Conrtol erstellt, kann man auch per
Button machen )

Public Class Form1
 
    ' Maus-Koordinaten
    Dim nStartPos As Point
    Dim nDragPos As Point
 
    Dim contr As Control
    Dim smallc As Control
    Dim x As Integer
 
 
    Private Sub contr_MouseMove(ByVal sender As Object, ByVal e As  _
      System.Windows.Forms.MouseEventArgs)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ' aktuelle Mausposition bezogen auf den Desktop ermitteln
            Dim nCurPos As Point = contr.PointToScreen(New Point(e.X, e.Y))
 
            ' Neue Position des Controls berechnen
            Dim nNewPos As New Point(nStartPos.X + nCurPos.X - nDragPos.X, _
              nStartPos.Y + nCurPos.Y - nDragPos.Y)
 
            ' Neue Koordianten prüfen und sicherstellen, dass das Control
            ' nicht aus den sichtbaren Bereich der Form verschoben wird
            With nNewPos
                If .X < Me.ClientRectangle.Left Then .X = Me.ClientRectangle.Left
                If .X + contr.Width > Me.ClientRectangle.Right Then
                    .X = Me.ClientRectangle.Right - contr.Width
                End If
                If .Y < Me.ClientRectangle.Top Then .Y = Me.ClientRectangle.Top
                If .Y + contr.Height > Me.ClientRectangle.Bottom Then
                    .Y = Me.ClientRectangle.Bottom - contr.Height
                End If
            End With
 
            ' Control an neuen Position verschieben
            contr.Location = nNewPos
        End If
    End Sub
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
      Handles Me.Load
        Dim txt As New TextBox
        x = 0
        txt.Text = "Hallo Welt"
        txt.Left = 10
        txt.Width = 100
        txt.Height = 20
        txt.Top = 20
        txt.Visible = True
        txt.Name = "txt" & x.ToString
        x = x + 1
 
        AddHandler txt.MouseDown, AddressOf contr_MouseDown
        AddHandler txt.MouseMove, AddressOf contr_MouseMove
 
        Me.Controls.Add(txt)
 
 
    End Sub
 
    Private Sub contr_MouseDown(ByVal sender As Object, ByVal e As  _
      System.Windows.Forms.MouseEventArgs)
 
        ' Feststellen das die Linke Maustaste gedrückt ist
        If e.Button = Windows.Forms.MouseButtons.Left Then
            ' Finden welches Control es war
            For Each smallc As Control In Me.Controls
                ' Richtige Control gefunden 
                If smallc.Focused Then
                    contr = smallc
                    ' aktuelle Position des Controls und der Maus merken
                    nStartPos = contr.Location
                    nDragPos = contr.PointToScreen(New Point(e.X, e.Y))
                End If
            Next
        End If
    End Sub
End Class
getestet VB 2008

Grüße

Matze
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Drag & Drop für alle Formularelemente818webmatze15.11.08 16:25
Re: Drag & Drop für alle Formularelemente643ModeratorDieter15.11.08 16:47
Re: Drag & Drop für alle Formularelemente554webmatze15.11.08 18:14

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-2025 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