OnPaint not triggered?
本文关键字:triggered not OnPaint | 更新日期: 2023-09-27 18:31:43
我有一个WinForm,我在其中覆盖OnPaint
,这个表单是MDI父级。但是,即使WinForm
显示与孩子一起,OnPaint
也不会触发?我尝试使用Invalidate
和Update
但没有触发OnPaint
吃掉?
我已经尝试过 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);
}
}