我正在嘗試向我的C#winforms項目添加可調整大小的面板。限制可調整大小的面板(比例和最小/最大大小)
我目前使用此代碼來獲得我想要的東西:
using System;
using System.Drawing;
using System.Windows.Forms;
class ResizablePanel : Panel
{
private const int grab = 16;
public ResizablePanel()
{
this.ResizeRedraw = true;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
var rc = new Rectangle(this.ClientSize.Width - grab, this.ClientSize.Height - grab, grab, grab);
ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc);
}
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == 0x84)
{
var pos = this.PointToClient(new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16));
if (pos.X >= this.ClientSize.Width - grab && pos.Y >= this.ClientSize.Height - grab)
m.Result = new IntPtr(17);
}
}
}
其工作正常,但現在我想限制一些東西。
我不希望面板小於420x236。 我試圖設置MinimumSize,但忽略了當我嘗試調整大小。
我想保持寬高比爲16:9。
我如何得到上面的代碼?有沒有辦法做到這一點?
你有沒有試過SetBoundsCore()?這是一種虛擬方法,您可以在像您這樣的情況下使用它。 – Bahrom