Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否未触发OnPaint?_C#_.net_Winforms_Paint - Fatal编程技术网

C# 是否未触发OnPaint?

C# 是否未触发OnPaint?,c#,.net,winforms,paint,C#,.net,Winforms,Paint,我有一个WinForm,在这里我重写了OnPaint,这个表单是MDI父级。但是,即使与子级一起显示WinForm,也不会触发OnPaint?我已尝试使用无效和更新,但未触发OnPainteather 我尝试过绘画活动,但在这里是一样的吗 有什么想法吗?当您设置Form.IsMdiContainer时,它实际上只是在表单中添加了一个MdiClient控件。子窗体实际上显示在MdiClient控件中,而不是窗体本身。正在引发窗体的绘制事件,但MdiClient已停靠在窗体中,因此您看不到它。您需要

我有一个WinForm,在这里我重写了
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)