Erstellen einer größenveränderbaren randlosen WinForm: Die vollständige Anleitung
Wenn Sie das Erscheinungsbild von Windows Forms anpassen, möchten Sie möglicherweise die Standardrahmen entfernen und die Größenänderung zulassen. Die Eigenschaft „FormBorderStyle“ ermöglicht zwar das Ausblenden des Rahmens, deaktiviert aber auch die Größenänderung.
Um dieses Problem zu lösen, betrachten Sie den folgenden benutzerdefinierten Code, der das Verschieben und Ändern der Größe ohne Ränder ermöglicht:
<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>
Dieser Code enthält die folgenden Schlüsselelemente:
Durch die Implementierung dieses Codes können Sie jetzt die Vorteile eines randlosen WinForm nutzen und dessen Größe problemlos ändern.
Das obige ist der detaillierte Inhalt vonWie ändere ich die Größe eines randlosen WinForm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!