Добавление элементов динамической панели и полосы прокрутки

Я написал функцию для динамического добавления элементов в "Панель".

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, поэтому есть полосы прокрутки. Проблема в том, что элементы добавляются по-разному, в зависимости от положения полосы прокрутки. Если полоса прокрутки находится вверху, то все добавлено по мере необходимости.

enter image description here

но если во время добавления полоса прокрутки внизу, а затем добавить элементы идут не так

enter image description here

пожалуйста, скажи мне, что я делаю неправильно и как это исправить? Спасибо. извините за плохой английский

1 ответов


при размещении элементов управления внутри панели необходимо компенсировать положение прокрутки:

в основном, попробуйте использовать эту строку:

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