动态面板元素添加和滚动条

我写了一个函数来动态地向“面板”添加元素。

public int State; public Point Point = new Point(0, 0); public void DialogAdd(string message, string author) { var d = new DialogMessage(); if(State == 0) { d.BackColor = Color.FromArgb(255, 237, 241, 245); State = 1; } else { State = 0; } d.Controls["name"].Text = author; d.Location = new Point(0, Point.Y); d.Controls["msg"].Text = message; Point.Y += d.Size.Height; Controls["panel1"].Controls.Add(d); } 

DialogMessage是UserControl,在所有组件上都具有属性“AutoSize = true”。 这个面板有AutoScroll属性,所以有滚动条。 问题是元素以不同的方式添加,具体取决于滚动条的位置。 如果滚动条位于顶部,则根据需要添加所有内容。

在此处输入图像描述

但如果在底部添加滚动条时,则添加错误的项目

在此处输入图像描述

请告诉我我做错了什么以及如何解决? 谢谢。 抱歉英语不好

将控件放在面板内时,必须补偿滚动位置:

基本上,尝试使用此行:

 d.Location = new Point(0, panel1.AutoScrollPosition.Y + Point.Y);