Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dynamic panel element adding and scrollbars

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.

enter image description here

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

enter image description here

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

like image 233
kopaty4 Avatar asked Jan 16 '12 19:01

kopaty4


People also ask

How do I add a scrollbar to an element?

You need to add style="overflow-y:scroll;" to the div tag. (This will force a scrollbar on the vertical).

How can add scrollbar in panel in VB net?

Set Panel. AutoScroll = True and scrollbars will automatically appear whenever any controls in the panel fall outside its boundaries. You can also set the Panel's . Anchor properties so that it resizes with the form.


1 Answers

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);
like image 140
LarsTech Avatar answered Sep 29 '22 13:09

LarsTech