我有一个WinForm覆盖OnPaint,这个表单是MDI父表。然而,即使在显示带有子对象的OnPaint时,也不会触发WinForm?我尝试过使用Invalidate和Update,但是没有触发OnPaint?
我试过油漆事件,但这里也是一样的吗?
有什么想法吗?
发布于 2012-04-19 13:40:54
当您设置Form.IsMdiContainer时,它实际上只是向窗体添加了一个MdiClient控件。您的子窗体实际上显示在MdiClient控件中,而不是窗体本身。正在引发窗体的画图事件,但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);
}
}https://stackoverflow.com/questions/10229206
复制相似问题