我有一个 WinForm ,我在其中覆盖OnPaint,这个表单是MDI 父级。OnPaint但是,即使WinForm与孩子一起显示,也不会触发?我试过用Invalidate但Update不触发OnPainteather?
我已经尝试过 Paint 事件,但它在这里是一样的吗?
任何想法?
当您设置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);
}
}