我有一个应用程序,需要适应一系列不同的屏幕尺寸(分辨率)。我使用表格布局面板完成了大部分工作。
但是一些控件(主要是按钮和标签)的字体太大,文本不适合控件。到目前为止,我已经成功地更改了一些控件的字体
if (Screen.PrimaryScreen.Bounds.Width < 1440)
{
button_5.Font = new Font("Impact", button_5.Font.Size - 4);
}
但是,对于应用程序中的每个控件来说,要添加太多的文本。
有没有一种方法可以同时更改应用程序中所有控件的字体?或者至少是窗体上的所有控件?
2条答案
按热度按时间cwdobuhd1#
一个简单的递归函数将遍历窗体中的所有控件并更改字体大小。您需要针对您的控件测试它并查看效果,因为在此代码中没有异常处理
您可以通过传递初始窗体的控件集合从顶层窗体调用它
xu3bshqb2#
基于Steve's的好答案,我会做以下改进:
这允许以百分比增加或缩小字体大小,如:
或者你可以将字体大小绝对缩小一个值-4,如:
在这两个示例中,所有字体都将受到更改的影响。您不需要知道字体系列名称,每个控件可以有不同的字体系列名称。
结合this answer,您可以根据Windows设置在应用程序中自动缩放字体(如果您在桌面上单击鼠标右键,然后选择“显示设置”、“缩放和布局”,并修改值“更改文本、应用程序和其他项目的大小”-在比build 1809更新的Windows 10版本中,这被(重新)命名为"Make everything bigger"):
您还应该根据您的表单布局,将大小限制在一定的最大/最小值。g的。
同样,对于绝对值也是如此-请注意,在代码中已经设置了限制:实际上,字体不能小于4 em -这是设置为最小限制(当然,您可以根据需要调整)。