在Windows中更改默认字体会弄乱我的Win Forms按钮

时间:2009-01-14 15:57:02

标签: c# .net winforms

我们有一组C#(.NET 2.0)应用程序,它们具有自定义对话框窗口。当用户在Windows中更改默认字体大小和分辨率等时,表单的边缘将失去控件(它们被推离表单的可见部分),通常从底部删除按钮。这对我们来说是个问题,并且会使用我们围绕这些应用程序创建的标准外观框架在其他应用程序中引起问题。

您如何使整个应用程序独立于Windows字体更改?您如何将其整合到多个解决方案中?

或者更好的是,如何使整个应用程序能够通过Windows外观变化进行自我调整?

2 个答案:

答案 0 :(得分:3)

WinForms具有AutoScaleMode属性,可以将其设置为Font,DPI,Inherit或None。默认为“字体”,根据我的经验,它并不总是正确地缩放。您可以尝试其他选项之一(如果您不希望表单完全扩展,可能会选择“无”)。

至于使整个应用程序能够自我调整,请查看“继承”选项(您仍然需要在应用程序的父或启动表单上设置除“继承”之外的其他内容。)

答案 1 :(得分:0)

您可以在Microsoft.Win32命名空间中处理SystemEvents.UserPreferenceChanged事件。系统字体更改时,UserPreferenceChangedEventArgs参数的CategoryUserPreferenceCategory.Window。我想你必须触发手动窗口布局并重新绘制以响应此事件。