Randlose bewegliche Form erstellen (C#)
Umrandete Formulare lassen sich leicht in der Größe ändern und verschieben, sie sind jedoch nicht immer die beste Wahl. Manchmal möchten Sie vielleicht ein randloses Design, aber das stellt uns vor ein Rätsel: Wie kann man ein Formular ohne Ränder verschieben? So erreichen Sie dies:
Diese Methode verwendet die Win32-API, um das Verhalten eines Fensters mit einer Titelleiste zu simulieren. Sie benötigen folgende Konstanten und Funktionen:
<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();</code>
Implementieren Sie im MouseDown-Ereignishandler des randlosen Formulars den folgenden Code:
<code class="language-csharp">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>
Dieser Code simuliert das Verhalten beim Klicken auf die Titelleiste und ermöglicht es Ihnen, das gesamte Formular zu verschieben, indem Sie auf eine beliebige Stelle im Formular klicken. Wenn die linke Maustaste gedrückt wird, wird die Erfassung freigegeben und eine Nachricht an den Fenstermanager gesendet, die angibt, dass eine Schaltfläche in der „Titelleiste“ (HT_CAPTION) des Formulars gedrückt wird. Durch die Simulation dieses Verhaltens können Sie das Formular so verschieben, als ob es einen Rand hätte, ohne dass das gewünschte randlose Design beeinträchtigt wird.
Das obige ist der detaillierte Inhalt vonWie kann ich ein randloses Formular in C# beweglich machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!