Mencipta WinForm Tanpa Sempadan Boleh Diubah: Panduan Lengkap
Apabila menyesuaikan penampilan Windows Forms, anda mungkin mahu mengalih keluar sempadan lalai dan membenarkan saiz semula. Walaupun sifat "FormBorderStyle" membenarkan sempadan disembunyikan, ia juga melumpuhkan saiz semula.
Untuk menyelesaikan masalah ini, pertimbangkan kod tersuai berikut, yang membenarkan pengalihan dan saiz semula tanpa sempadan:
<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>
Kod ini mengandungi elemen utama berikut:
Dengan melaksanakan kod ini, anda kini boleh menikmati faedah WinForm tanpa sempadan dan mengubah saiznya dengan mudah.
Atas ialah kandungan terperinci Bagaimana untuk Mengubah Saiz WinForm Tanpa Sempadan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!