VB.NET-Tipp 0045: Form ohne Titelleiste bewegen
von Thomas Frömmel
Beschreibung
Was tun mit einer Form ohne Titelleiste, wenn sie per Maus hin- und hergeschoben werden soll? Dieses Beispiel zeigt, wie man dieses Problem mit den zwei API-Funktionen SendMessage und ReleaseCapture elegant lösen kann.
Schwierigkeitsgrad: | Framework-Version(en): .NET Framework 1.0, .NET Framework 1.1, .NET Framework 2.0, .NET Framework 3.0, .NET Framework 3.5 | .NET-Version(en): Visual Basic 2002, Visual Basic 2003, Visual Basic 2005, Visual Basic 2008 | Download: |
' Dieser Quellcode stammt von http://www.activevb.de ' und kann frei verwendet werden. Für eventuelle Schäden ' wird nicht gehaftet. ' Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. ' Ansonsten viel Spaß und Erfolg mit diesem Source! ' Projektversion: Visual Studio 2002/2003 ' Option Strict: Aus ' Option Explicit: An ' ' Referenzen: ' - System ' - System.Data ' - System.Drawing ' - System.Windows.Forms ' - System.XML ' ' Imports: ' - Microsoft.VisualBasic ' - System ' - System.Collections ' - System.Data ' - System.Drawing ' - System.Diagnostics ' - System.Windows.Forms ' ' ############################################################################## ' ################################# Form1.vb ################################### ' ############################################################################## Public Class Form1 Inherits System.Windows.Forms.Form Private Declare Function ReleaseCapture Lib "user32" () As Integer Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _ ByVal hwnd As Integer, _ ByVal wMsg As Integer, _ ByVal wParam As Integer, _ ByRef lParam As Object) As Integer Private Const HTCAPTION As Short = 2 Private Const WM_NCLBUTTONDOWN As Short = &HA1S Private Const WM_SYSCOMMAND As Short = &H112S Private Sub Label1_MouseDown( _ ByVal eventSender As System.Object, _ ByVal eventArgs As System.Windows.Forms.MouseEventArgs) _ Handles Label1.MouseDown ReleaseCapture() SendMessage(Me.Handle.ToInt32, WM_NCLBUTTONDOWN, HTCAPTION, 0) End Sub Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Me.Close() End Sub End Class
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Philipp Serrer am 18.09.2009 um 19:49
Hi,
wenn du die größe andern willst, gibt es noch die anderen HT Konstanten - HTTOP, HTLEFT, HTBOTTOM und HTRIGHT. Funktioniert genauso wie mit HTCAPTION(getestet unter WinVista, sollte aber auch auf anderen Versionen laufen)
PS: Die Konstanten findest du im API-Viewer
Gruß
Philipp
Kommentar von am 25.04.2008 um 16:59
Hallo
wie kann ich eine Form mit der Eigenschaft <FormBorderstyle>
<None> auseinanderziehen wie wenn sie <Sizeable> wäre.
Mit freundlichem Gruß
Ferneschild