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 15.116 mal aufgerufen.
Anzeige
![]() ![]() ![]() (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. |
sevISDN 1.0 ![]() Überwachung aller eingehender Anrufe! Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Tipp des Monats Neu! sevCoolbar 3.0 ![]() Professionelle Toolbars im modernen Design! Mit sevCoolbar erstellen Sie in wenigen Minuten ansprechende und moderne Toolbars und passen diese optimal an das Layout Ihrer Anwendung an (inkl. große Symbolbibliothek) - für VB und MS-Access |
||||||||||||||||
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. |