| |

VB.NET - Ein- und UmsteigerRe: 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 |  |
 | 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 |
  |
|
sevAniGif (VB/VBA) 
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats Oktober 2025 Matthias KozlowskiUmlaute konvertierenErsetzt die Umlaute in einer Zeichenkette durch die entsprechenden Doppelbuchstaben (aus ä wird ae, usw.) Access-Tools Vol.1 
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|