Ribbon Control re-sizing modes and support for different DPI settings
The RibbonControl by default has fixed height and its height needs to be adjusted manually if for example DPI settings on target machine change or usage of larger fonts is expected on target machines.
Ribbon Control does not manage the height automatically since it does not have knowledge about the full ribbon height. There might be items that you dynamically show, merged items from MDI Child forms etc. so it is developers responsibility to manage the height of the Ribbon.
The automatic scaling provided by Windows Forms is linear per control scaling. Since there are multiple RibbonBar controls on each Ribbon panel they will not scale the same due to the different content they have and Windows Forms framework does not know how to scale complex controls. For example the Image Size is fixed while the font size changes. That creates uneven non-linear sizing which is what you might see if you do not manage the height of the control.
RibbonControl has two sizing modes:
- RibbonControl.AutoSize=false which means that you are in control of the height of the control. How do you manage the height is up to you. We recommend that you take a RibbonBar that you know that is tallest and determines the total height. Then use its RibbonBar.GetAutoSizeHeight() method to calculate the total height of the control. To that you can add RibbonControl.RibbonStrip.Height and also you might need to add couple of pixels to account for the borders, padding etc. This method should work very well if you use Form. AutoScaleMode = AutoScaleMode.Font
- RibbonControl.AutoSize=true which means we are managing the height of the control based on the content that it has, which also means that height might change when you switch from tab to tab due to different size of the RibbonBar controls on each tab. Most people do not prefer this mode since they want to control the height of the control and control height changes based on what is selected. Office 2007 Ribbon Design Guidelines also state that ribbon should be fixed in height so this property should not really be used if compliance with guidelines is needed.