Erstellen eines draggierbaren, randlosen Fensterformulars
Das Entwerfen von randlosen Formen in Windows -Formularen bietet eine schlanke, moderne Ästhetik. Dies ist jedoch häufig eine Herausforderung: Wie kann das Formular ohne die übliche Titelleiste oder Grenze beweglich sein? Dieser Artikel enthält eine Lösung mit der Windows -API.
Der Schlüssel besteht darin, einen Klick auf die Titelleiste mit den Funktionen SendMessage
und ReleaseCapture
zu simulieren. Diese API -Aufrufe trennen den Fenstermanager effektiv dazu, einen Drag -Operation zu initiieren, selbst wenn keine sichtbare Grenze vorhanden ist.
Hier ist die Code -Implementierung:
<code class="language-csharp">public const int WM_NCLBUTTONDOWN = 0xA1; public const int HT_CAPTION = 0x2; [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam); [System.Runtime.InteropServices.DllImport("user32.dll")] public static extern bool ReleaseCapture(); private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if (e.Button == MouseButtons.Left) { ReleaseCapture(); SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0); } }</code>
Hinzufügen dieses Codes zum MouseDown
Ereignishandler Ihres Formulars ermöglicht das Ziehen und Neupositionieren des randlosen Formulars, indem Sie im Kundenbereich des Formulars an irgendwohin klicken und sie an irgendwohin ziehen. Dies liefert die gewünschte Funktionalität, ohne das saubere, randlose Design zu beeinträchtigen.
Das obige ist der detaillierte Inhalt vonWie kann ich ein randloses Formular in Windows Forms verschiebbar machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!