更改应用程序中所有控件的字体大小(win 表单)

Mar*_*nas 4 c# fonts resolution winforms adaptive-design

我有一个应用程序需要适应一系列不同的屏幕尺寸(分辨率)。其中大部分工作是我使用表格布局面板完成的。

但某些控件(主要是按钮和标签)的字体太大,文本不适合控件。到目前为止,我已经通过使用更改了一些控件的字体

            if (Screen.PrimaryScreen.Bounds.Width < 1440)
        {
            button_5.Font = new Font("Impact", button_5.Font.Size - 4);
        }
Run Code Online (Sandbox Code Playgroud)

但是,为应用程序中的每个控件添加的文本太多。

有没有办法一次性更改应用程序上所有控件的字体?或者至少是表单上的所有控件?

Ste*_*eve 7

一个简单的递归函数将遍历表单中的所有控件并更改字体大小。您需要针对您的控件进行测试并查看效果,因为在此代码中没有异常处理

public void SetAllControlsFont(ControlCollection ctrls)
{
    foreach(Control ctrl in ctrls)
    {
        if(ctrl.Controls != null)
            SetAllControlsFont(ctrl.Controls);

        ctrl.Font = new Font("Impact", ctrl.Font.Size - 4);

    }
}
Run Code Online (Sandbox Code Playgroud)

您可以从顶级表单中传递初始表单的控件集合来调用它

SetAllControlsFont(this.Controls);
Run Code Online (Sandbox Code Playgroud)