首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# AutoScaleMode字体,粗体控件不能缩放

C# AutoScaleMode字体,粗体控件不能缩放
EN

Stack Overflow用户
提问于 2014-11-05 22:12:46
回答 1查看 277关注 0票数 0

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

是否可以更改控件的默认字体,但仍然像其余控件一样使用AutoScale

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-11-05 23:51:13

您可能正在使用字体缩放来做它不想做的工作。它旨在补偿目标计算机上的不同视频DPI。是的,您还可以使用它通过更改窗体的Font属性来重新缩放窗体。但是,如果控件不“继承”父级的字体,那么您就会遇到麻烦。你必须自己更新他们的字体属性。

这样做需要从里到外迭代控件,只更新那些没有继承父级字体的控件。这样做效果很好:

代码语言:javascript
复制
    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);
        }
    }

示例用法:

代码语言:javascript
复制
    private void Form1_Load(object sender, EventArgs e) {
        ScaleFonts(this, 1.25f);
    }

一种可能的失败模式是在执行此操作时触发布局事件,使布局变得混乱。这很难推理,你可能需要调用Suspend/ResumeLayout()来解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26759316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档