C#处理动态字体大小的方法

时间:2011-08-30 16:45:02

标签: c# .net winforms

动态更改应用程序字体大小的好方法是什么?我有很多带有许多标签的屏幕。这些标签至少从一个共同的标签继承。另一个问题是我应该将标签留下来自动调整大小并只使用标签中的换行符以便它可以分解吗?我已经将许多标签切换为不自动化,因为它变宽并且不会自行包装。

目前我已将所有设置为锚定等等,任何按钮等都可以。这只是现在需要按照大小调整大小的字体。

谢谢!

2 个答案:

答案 0 :(得分:2)

在每个表单的构造函数中InitializeComponent();之前,只需根据需要添加this.Font = new Font( ... );即可。但是,如果您将每个控件保留为默认值,它将仅通过控件级联。您可以在初始化后始终进行循环:

foreach(Control c in this.Controls)
{
    if(c is Label) //if you want to change Labels only
        c.Font = new Font( ... );
}

如果它让事情看起来很奇怪,请更改您的AutoScaleMode及相关属性。

要解决如何处理包装标签文字的问题,请使用Label1.AutoSize = true,然后设置Label1.MaximumSize = new Size(x, 0);,其中x是您的最大宽度。

所有人都说,如果你要经常动态扩展,你真的应该考虑使用WPF而不是WinForms。它具有更强的自动处理这些类型任务的能力。

答案 1 :(得分:0)

您可以在应用程序设置中将字体大小保存为整数。 然后,当您获得字体大小时,您的应用程序将在启动时记住其字体状态。

    Properties.Settings.Default.FontSize = 3;
    Properties.Settings.Default.Save();

然后如上所述使用foreach循环。

    foreach(Control c in this.Controls)
    {
     c.Font = new Font( .. );
    // if(c is Panel)
    //   {
    //     foreach(Control d in c.Controls)
    //     {
    //     d.Font = new Font( .. );
    //     }
       }
    }