Créer un WinForm sans bordure redimensionnable : le guide complet
Lors de la personnalisation de l'apparence des Windows Forms, vous souhaiterez peut-être supprimer les bordures par défaut et autoriser le redimensionnement. Bien que la propriété "FormBorderStyle" permette de masquer la bordure, elle désactive également le redimensionnement.
Pour résoudre ce problème, considérez le code personnalisé suivant, qui permet de déplacer et de redimensionner sans bordures :
<code class="language-c#">public partial class Form1 : Form { public Form1() { InitializeComponent(); this.FormBorderStyle = FormBorderStyle.None; this.DoubleBuffered = true; this.SetStyle(ControlStyles.ResizeRedraw, true); } private const int cGrip = 16; // 调整大小手柄尺寸 private const int cCaption = 32; // 标题栏高度 protected override void OnPaint(PaintEventArgs e) { // 绘制右下角的调整大小手柄 Rectangle rc = new Rectangle(this.ClientSize.Width - cGrip, this.ClientSize.Height - cGrip, cGrip, cGrip); ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc); // 绘制模拟的标题栏 rc = new Rectangle(0, 0, this.ClientSize.Width, cCaption); e.Graphics.FillRectangle(Brushes.DarkBlue, rc); } protected override void WndProc(ref Message m) { if (m.Msg == 0x84) // 捕获 WM_NCHITTEST 消息 { Point pos = new Point(m.LParam.ToInt32()); pos = this.PointToClient(pos); if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip) { m.Result = (IntPtr)17; // HTBOTTOMRIGHT return; } } base.WndProc(ref m); } }</code>
Ce code contient les éléments clés suivants :
En implémentant ce code, vous pouvez désormais profiter des avantages d'un WinForm sans bordure et le redimensionner facilement.
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!