OnPaint not triggered?

本文关键字:triggered not OnPaint | 更新日期: 2023-09-27 18:31:43

我有一个WinForm,我在其中覆盖OnPaint,这个表单是MDI父级。但是,即使WinForm显示与孩子一起,OnPaint也不会触发?我尝试使用InvalidateUpdate但没有触发OnPaint吃掉?

我已经尝试过 Paint 事件,但这里是一样的吗?

知道吗?

OnPaint not triggered?

当你设置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);
    }
}