在绘画上形成后,儿童控件不会重新绘制自己

时间:2012-10-11 09:13:17

标签: c# custom-controls onpaint

我正在使用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);
    }

1 个答案:

答案 0 :(得分:0)

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

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