我有一个 WinForm ,我在其中覆盖OnPaint
,这个表单是MDI 父级。OnPaint
但是,即使WinForm
与孩子一起显示,也不会触发?我试过用Invalidate
但Update
不触发OnPaint
eather?
我已经尝试过 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);
}
}