Maison >développement back-end >C++ >Comment puis-je rendre un formulaire sans bordure mobile dans Windows Forms ?

Comment puis-je rendre un formulaire sans bordure mobile dans Windows Forms ?

DDD
DDDoriginal
2025-01-24 15:41:091046parcourir

How Can I Make a Borderless Form Movable in Windows Forms?

Création d'un formulaire Windows déplaçable et sans bordure

La conception de formulaires sans bordure dans Windows Forms offre une esthétique élégante et moderne. Cependant, cela présente souvent un défi : comment rendre le formulaire mobile sans la barre de titre ou la bordure habituelle ? Cet article propose une solution utilisant l'API Windows.

L'essentiel est de simuler un clic sur la barre de titre à l'aide des fonctions SendMessage et ReleaseCapture. Ces appels d'API incitent efficacement le gestionnaire de fenêtres à lancer une opération de glisser, même en l'absence de bordure visible.

Voici l'implémentation du code :

<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>

L'ajout de ce code au gestionnaire d'événements MouseDown de votre formulaire vous permet de faire glisser et de repositionner le formulaire sans bordure en cliquant et en faisant glisser n'importe où dans la zone client du formulaire. Cela fournit la fonctionnalité souhaitée sans compromettre le design épuré et sans bordure.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn