Dynamic panel element adding and scrollbars

為{幸葍}努か 提交于 2019-12-18 05:45:40

问题


I wrote a function to dynamically add elements to the "Panel".

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 is UserControl, that haves property "AutoSize=true" on all components. This panel has got the AutoScroll property, so has got scrollbars. The problem is that the elements are added in different ways, depending on the position of the scrollbar. If the scrollbar is at the top, then all added as needed.

but if at the time of adding the scrollbar at the bottom, then add items going wrong

please tell me what I'm doing wrong and how to fix it? Thank you. sorry for bad english


回答1:


When placing the controls inside the panel, you have to compensate for the scroll position:

Basically, try using this line:

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


来源:https://stackoverflow.com/questions/8885342/dynamic-panel-element-adding-and-scrollbars

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!