KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to create a custom Panel control with my own layout engine. I need every control that is added to my panel to be added below and to take full width (-padding), like below: Below is my code: using System.Drawing; using System.Windows.Forms; using System.Windows.Forms.Layout; namespace VContainer { internal class VerticalFillList : Panel { public VerticalFillList() { AutoScroll = true; MinimumSize = new Size(200, 200); Size = new Size(200, 300); Padding = new Padding(10); } private readonly VerticalFillLayout _layoutEngine = new VerticalFillLayout(); public override LayoutEngine LayoutEngine { get { return _layoutEngine; } } private int _space = 10; public int Space { get { return _space; } set { _space = value; Invalidate(); } } } internal class VerticalFillLayout : LayoutEngine { public override bool Layout(object container, LayoutEventArgs layoutEventArgs) { var parent = container as VerticalFillList; Rectangle parentDisplayRectangle = parent.DisplayRectangle; Point nextControlLocation = parentDisplayRectangle.Location; foreach (Control c in parent.Controls) { if (!c.Visible) { continue; } c.Location = nextControlLocation; c.Width = parentDisplayRectangle.Width; nextControlLocation.Offset(0, c.Height + parent.Space); } return false; } } } Above code works fine, except one thing: when I'm adding controls to my container they are added correctly (new below pa
Tags (comma-separated)
Save Edits
Cancel