C#自动缩放模式字体,粗体控件不';t刻度

C#自动缩放模式字体,粗体控件不';t刻度,c#,fonts,autoscalemode,C#,Fonts,Autoscalemode,我正在开发一个小应用程序。我正在尝试使用AutoScaleMode=Font,它对我所有的意图都很有吸引力,除了一个,我希望一些特定的控件有粗体文本,但是当字体大小改变时,它们不会自动缩放 是否可以更改控件的默认字体,但仍将自动缩放更改为其他控件 提前感谢您可能正在使用字体缩放来完成一项本不打算完成的工作。它的设计是为了补偿目标机器上不同的视频DPI。是的,您还可以使用它通过更改表单的字体属性来重新缩放表单。但是,如果控件不“继承”其父字体,则会遇到麻烦。你必须自己更新他们的字体属性 自动执行此

我正在开发一个小应用程序。我正在尝试使用
AutoScaleMode=Font
,它对我所有的意图都很有吸引力,除了一个,我希望一些特定的控件有粗体文本,但是当字体大小改变时,它们不会自动缩放

是否可以更改控件的默认字体,但仍将
自动缩放
更改为其他控件


提前感谢

您可能正在使用字体缩放来完成一项本不打算完成的工作。它的设计是为了补偿目标机器上不同的视频DPI。是的,您还可以使用它通过更改表单的字体属性来重新缩放表单。但是,如果控件不“继承”其父字体,则会遇到麻烦。你必须自己更新他们的字体属性

自动执行此操作需要从内到外迭代控件,只更新那些不继承其父字体的控件。这很有效:

    public static void ScaleFonts(Control ctl, float multiplier) {
        foreach (Control c in ctl.Controls) ScaleFonts(c, multiplier);
        if (ctl.Parent == null || ctl.Parent.Font != ctl.Font) {
            ctl.Font = new Font(ctl.Font.FontFamily, 
                                ctl.Font.Size * multiplier, ctl.Font.Style);
        }
    }
示例用法:

    private void Form1_Load(object sender, EventArgs e) {
        ScaleFonts(this, 1.25f);
    }
一种可能的故障模式是在执行此操作时触发布局事件,导致布局混乱。这很难理解,您可能需要调用Suspend/ResumeLayout()来解决这个问题