Erstellen Sie randlose, in der Größe veränderbare WinForms-Formulare
Das Erstellen randloser und in der Größe veränderbarer Formulare ist in WinForms nicht einfach. Mit nur wenigen Änderungen kann es jedoch randlos und in der Größe veränderbar gemacht werden.
Um den Standard-Windows-Rahmen zu deaktivieren, setzen Sie die Eigenschaft „FormBorderStyle“ auf „None“. Dadurch entfällt jedoch auch die Möglichkeit, die Größe des Formulars zu ändern. Hierzu sind Codeanpassungen erforderlich.
Das folgende Codebeispiel definiert einen benutzerdefinierten Handler zum Zeichnen von Größenänderungsgriffen und zum Simulieren der Titelleiste, während „WndProc“ überschrieben wird, um die WM_NCHITTEST-Nachricht zu verarbeiten:
<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>
Mit diesem Code können Sie ein randloses Formular erstellen, dessen Größe noch durch Ziehen des unteren rechten Griffs und der simulierten Titelleiste geändert werden kann.
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines randlosen WinForms ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!