OnPaint没有触发?

时间:2012-04-19 13:33:06

标签: c# .net winforms paint

我有一个WinForm,我覆盖OnPaint,此表单是 MDI父。但是,即使OnPaint与孩子一起显示,WinForm也不会被触发?我曾尝试使用InvalidateUpdate,但未触发OnPaint eather?

我尝试过Paint事件,但它在这里一样吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

当您设置Form.IsMdiContainer时,它实际上只是向表单添加了MdiClient控件。您的子表单实际上显示在MdiClient控件中,而不是表单本身。您的表单的Paint事件正在被引发,但是MdiClient停靠在表单中,因此您看不到它。您需要改为访问MdiClient的绘制事件。

public partial class Form1 : Form
{
    public Form1() {
        InitializeComponent();

        mdiClient = Controls[0] as MdiClient;

        if (mdiClient != null) {
            mdiClient.Paint += OnMdiClientPaint;
        }
    }

    private MdiClient mdiClient;

    private void OnMdiClientPaint(object sender, PaintEventArgs e) {
        e.Graphics.FillRectangle(Brushes.Blue, mdiClient.ClientRectangle);
    }
}