我们拥有一系列带有自定义对话框窗口的C#(.NET2.0)应用程序。当用户更改Windows中的默认字体大小和分辨率等设置时,表单的边缘会失去控件(它们被推出表单的可见部分),通常从底部删除按钮。这对我们来说很有问题,将会在我们正在为这些应用程序创建的标准外观框架中引起问题。
你如何让整个应用程序与Windows字体更改无关?你如何将其集成到多个解决方案中?
或者更好的做法是如何使整个应用程序适应Windows外观的变化并自适应调整?
我们拥有一系列带有自定义对话框窗口的C#(.NET2.0)应用程序。当用户更改Windows中的默认字体大小和分辨率等设置时,表单的边缘会失去控件(它们被推出表单的可见部分),通常从底部删除按钮。这对我们来说很有问题,将会在我们正在为这些应用程序创建的标准外观框架中引起问题。
你如何让整个应用程序与Windows字体更改无关?你如何将其集成到多个解决方案中?
或者更好的做法是如何使整个应用程序适应Windows外观的变化并自适应调整?
WinForms有一个AutoScaleMode属性,可以设置为Font、DPI、Inherit或None。默认值为“Font”,根据我的经验,它并不总是能正确地缩放。您可以尝试其他选项(也许是“None”,如果您不希望您的表单缩放?)。
关于使整个应用程序能够自适应,请查看“继承”选项(但您仍需要在应用程序的父表单或启动表单上设置除“继承”以外的其他内容)。
您可以在Microsoft.Win32命名空间中处理SystemEvents.UserPreferenceChanged事件。当系统字体更改时,UserPreferenceChangedEventArgs参数将具有UserPreferenceCategory.Window类别。我认为您随后需要触发手动窗口布局和重绘来响应此事件。