C# 是否未触发OnPaint?
我有一个WinForm,在这里我重写了C# 是否未触发OnPaint?,c#,.net,winforms,paint,C#,.net,Winforms,Paint,我有一个WinForm,在这里我重写了OnPaint,这个表单是MDI父级。但是,即使与子级一起显示WinForm,也不会触发OnPaint?我已尝试使用无效和更新,但未触发OnPainteather 我尝试过绘画活动,但在这里是一样的吗 有什么想法吗?当您设置Form.IsMdiContainer时,它实际上只是在表单中添加了一个MdiClient控件。子窗体实际上显示在MdiClient控件中,而不是窗体本身。正在引发窗体的绘制事件,但MdiClient已停靠在窗体中,因此您看不到它。您需要
OnPaint
,这个表单是MDI父级。但是,即使与子级一起显示WinForm
,也不会触发OnPaint
?我已尝试使用无效
和更新
,但未触发OnPaint
eather
我尝试过绘画活动,但在这里是一样的吗
有什么想法吗?当您设置
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);
}
}
这实际上是不可能的,OnPaint不会被触发,你甚至可以看到表单,所以。。。还有别的地方不对劲。可以提供一些代码吗?您尚未确定错误的行为,因为我可以向您保证,如果您在应用程序运行时可以看到表单上的控件,则会触发OnPaint事件。那么,如何禁用base.OnPaint(…)<代码>//base.OnPaint(e)代码>