C# .NET自定义用户控件';调整父对象的大小时,父对象的内容将消失

C# .NET自定义用户控件';调整父对象的大小时,父对象的内容将消失,c#,.net,winforms,user-controls,system.drawing,C#,.net,Winforms,User Controls,System.drawing,我派生了.NET用户控件,以创建自己的PictureList类。 但是,当我调整控件父级的大小时,控件的内容将消失。未发出调整大小事件或其他任何事件。我遗漏了与问题无关的代码 public ImageList(int width, int height) { ClientSize = new Size(width, height); ResizeRedraw = true; } // Ensure background tra

我派生了.NET用户控件,以创建自己的PictureList类。 但是,当我调整控件父级的大小时,控件的内容将消失。未发出调整大小事件或其他任何事件。我遗漏了与问题无关的代码

    public ImageList(int width, int height)
    {
        ClientSize = new Size(width, height);
        ResizeRedraw = true;

    }


    // Ensure background transparency will be handled corretly.
    protected override CreateParams CreateParams
    {
        get {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x20; // WS_EX_TRANSPARENT
            return cp;
        }
    }

    protected override void OnPaint(PaintEventArgs e)
    {
        MessageBox.Show("This messagebox is only shown upon the first drawing, but not after the magically disappearing of the contents");

        img = /*the image to draw*/
        rect = /*the size of the image*/
        e.Graphics.DrawImage(img, rect);
    }

您需要启用自动重绘吗?

您需要启用自动重绘吗?

我无法再现您的错误。我也不知道为什么在OnPaint中有一个MessageBox(希望只是为了抽象的目的)。您是以编程方式还是使用设计器生成这些控件?我是以编程方式创建的。MessageBox仅用于解释目的。问题是,控件绘制得非常完美。我在设计器中使用它,将其放置在布局中,并将布局锚定到窗体的侧面。当我调整窗体大小时,图像就消失了。我无法重现您的错误。我也不知道为什么在OnPaint中有一个MessageBox(希望只是为了抽象的目的)。您是以编程方式还是使用设计器生成这些控件?我是以编程方式创建的。MessageBox仅用于解释目的。问题是,控件绘制得非常完美。我在设计器中使用它,将其放置在布局中,并将布局锚定到窗体的侧面。当我调整窗体大小时,图像就消失了。自动重绘似乎是InkCollector上的一个属性,我不使用它。我需要吗?不,Winforms控件也有类似的功能,我会在找到答案后更新它。(从之前的记忆中回复)AutoRedraw似乎是InkCollector上的一个属性,我不使用它。我需要吗?不,Winforms控件也有类似的功能,我会在找到答案后更新它。(之前凭记忆回复)