C#: How to get a user control to properly auto size itself
Solution 1
Thanks for all the suggestions. The solution this time seemed to set AutoSize
to true
for both the FlowLayoutPanel
and the UserControl
itself.
Now, how to get the form which will contain this UserControl
as well as some other controls, that I can't quite figure out at the moment, but I guess that should be a separate question...
Solution 2
You can use the Anchor- and Dock property of the UserControl to set options so that the edges of your control gets "glued" to some other parts of your UI. When the UI gets resized, your control will follow along!
If you use anchors and dock on all controls in your user control and set them to dock the edges of the control, the controls will resize with the UserControl and you can now set anchors/dock to the UserControl also.
Solution 3
Wrapping the FlowLayoutPanel
in a TableLayoutPanel
will allow for proper autosize behavoir.
Your UserControl
should look like this:
UserControl
TableLayoutPanel (Dock-Fill)
Row1 : Label
Row2 : FlowLayoutPanel (Panel:Dock-Fill AND AutoSize, Row:AutoSize)
Row3 : Panel
Again, when using that UserControl
, it is possible you will need to wrap it in a TableLayoutPanel
using an AutoSize
row or column.
Watch for SplitContainers
since they often throw autosize behaviors out of balance.
Related videos on Youtube
Lemon
Software Developer, Geek, HSP, SDA, ..., open, honest, careful, perfectionist, ... Currently into indoor rowing and rock climbing, just to mention something non-computer-related... Not the best at bragging about myself... so... not sure what more to write... 🤔
Updated on July 09, 2022Comments
-
Lemon almost 2 years
I have a
UserControl
which consists of aLabel
(Top), aFlowLayoutPanel
(Fill, TopDown flow and no wrap) and aPanel
(Bottom). The user control creates a number of controls, based on a list of stuff it gets, and adds them to theFlowLayoutPanel
.How can I get this
UserControl
to properly resize itself so that theFlowLayoutPanel
does not have any scroll bars? I have tried to use various combinations ofAutoSize
andAutoSizeMode
on theFlowLayoutPanel
and theUserControl
itself, but I can't seem to get it working. Either I end up with something that doesn't resize itself at all, or it doesn't become big enough or it is squished down to almost nothing. -
Lemon over 14 yearsThat I know, but I don't want the control to resize according to their parent. I want it to grow or shrink so that it is just big enough to cover the contents of the
FlowLayoutPanel
without it getting scroll bars or clipping any contents. -
sonyisda1 over 5 yearsHere is a link to an answer for how to get the UserControl loaded on to a form. Basically either add your assembly to Toolbox or rebuild solution.