我有一个WinForm,我覆盖OnPaint
,此表单是 MDI父。但是,即使OnPaint
与孩子一起显示,WinForm
也不会被触发?我曾尝试使用Invalidate
和Update
,但未触发OnPaint
eather?
我尝试过Paint事件,但它在这里一样吗?
有什么想法吗?
答案 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);
}
}