0

我正在制作一个没有 FormBorderStyle 的自定义表单。在表单中,我有一个停靠在表单顶部的面板。面板右侧有一些按钮。

我为表单重写了 OnPaint 以为其绘制边框,当我调整表单大小时,面板上的按钮仍在其位置。我尝试使用 form.Invalidate() 但没有任何反应。

对不起,我不允许在这里张贴图片。

这是表单的代码

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        Rectangle borderRectangle = this.ClientRectangle;
        borderRectangle.Inflate(-1, -1);
        //ControlPaint.DrawBorder3D(e.Graphics, borderRectangle, Border3DStyle.RaisedOuter);
        ControlPaint.DrawVisualStyleBorder(e.Graphics, borderRectangle);
    }

    protected override void OnResize(EventArgs e)
    {   
        this.Invalidate(true);
    }
4

1 回答 1

0

最后,我通过 OnClientSizeChanged 删除 OnResize 解决了这个问题 :)

protected override void OnClientSizeChanged(EventArgs e)
{
    this.Invalidate(true);
}
于 2012-10-11T09:53:16.483 回答