Ein Fenster ohne Titelzeile kann bekanntlich nicht mit der Maus verschoben werden. Wie man das aber dennoch realisieren kann, soll nachfolgender Tipp zeigen. Erstellen Sie ein neues Windows-Forms Projekt und setzen die Form-Eigenschaft "FormBorderStyle" auf den Wert "None". Per Mausklick auf einen freien Bereich der Form soll das Fenster dann verschoben werden können. Hierzu müssen wir uns im "MouseDown"-Ereignis die aktuelle Fenster-, sowie die aktuelle Mausposition merken und zwischenspeichern. Die Zwischenspeicherung der Koordinaten erfolgt in den beiden lokalen Variablen "nStartPos" und "nDragPos". Im MouseMove-Ereignis der Form wird die aktuelle Mauspositon neu ermittelt und das Fenster entsprechend an die neue Position verschoben. Public Class Form1 ' Maus-Koordinaten Dim nStartPos As Point Dim nDragPos As Point Private Sub Form1_MouseDown(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseDown ' Position des Fensters und der Maus merken If e.Button = Windows.Forms.MouseButtons.Left Then nStartPos = Me.Location nDragPos = Me.PointToScreen(New Point(e.X, e.Y)) End If End Sub Private Sub Form1_MouseMove(ByVal sender As Object, _ ByVal e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove If e.Button = Windows.Forms.MouseButtons.Left Then ' aktuelle Mausposition bezogen auf den Desktop Dim nCurPos As Point = Me.PointToScreen(New Point(e.X, e.Y)) ' Fenster an neuen Position verschieben Me.Location = New Point(nStartPos.X + nCurPos.X - nDragPos.X, _ nStartPos.Y + nCurPos.Y - nDragPos.Y) End If End Sub End Class Das war's dann auch schon. Erweiterung: Platzieren Sie auf die Form ein "Panel"-Control mit folgenden Eigenschaften:
... Private Sub Form1_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Me.Load ' Panel1-Ereignisbehandlung umleiten AddHandler Panel1.MouseDown, AddressOf Form1_MouseDown AddHandler Panel1.MouseMove, AddressOf Form1_MouseMove End Sub Private Sub Form1_FormClosing(ByVal sender As Object, _ ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing ' Ereignisbehandlung wieder lösen RemoveHandler Panel1.MouseDown, AddressOf Form1_MouseDown RemoveHandler Panel1.MouseMove, AddressOf Form1_MouseMove End Sub ... Dieser Tipp wurde bereits 14.543 mal aufgerufen. Voriger Tipp | Zufälliger Tipp | Nächster Tipp
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv Vol.6 (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
vb@rchiv CD Vol.6 Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! Online-Update-Funktion Entwickler-Vollversionen u.v.m. Tipp des Monats Mai 2024 Hermann Röttger Wochentage eines Datumsbereichs ermitteln Wochentage eines Datumsbereichs ermitteln, optional mit Feiertagsberechnung sevOutBar 4.0 Vertikale Menüleisten á la Outlook Erstellen von Outlook ähnlichen Benutzer- interfaces - mit beliebig vielen Gruppen und Symboleinträgen. Moderner OfficeXP-Style mit Farbverläufen, Balloon-Tips, u.v.m. |
||||||||||||||||
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. |