Echoing other statements here, I'd say this is not the kind of thing you want to do in WinForms.
You haven't mentioned dynamically scaling Font-size: if you are thinking of that, I'd strongly suggest you forget it. Fonts in WinForms are only going to look good at certain distinct point-sizes.
I'd suggest you analyze if you have too many components on one Form, and adapt a strategy for organizing the components into functional groups, and then using something like a TabControl to display them by group. Or, consider using SplitContainers.
You can also try organizing the components into functional groups using Panels, and you can do a lot with anchoring, or docking, Panels.
If you really have to do this, you'll need to use recursion to handle Controls within Controls, and adjust their sizes using a ratio you calculate (the solution by Karthy above only adjusts the size of the top-level Controls on the Form).
Check out WeiFen Luo's DockPanelSuite: [
^]; on SourceForge: [
^].