.net 如何确保表格';s的布局(特别是字体)将是我所期望的吗?

.net 如何确保表格';s的布局(特别是字体)将是我所期望的吗?,.net,winforms,fonts,.net,Winforms,Fonts,通常我会创建一个winforms应用程序,当我运行它时,一切看起来都很棒。然后我走到用户的电脑前,我看到标签被挤压,字体变大,导致文本被切掉等等。这是怎么回事?我怎样才能防止这种情况 我尤其在较新的windows操作系统(如windows 7等)上看到了这一点。如何使表单对所有用户都相同(或至少良好),在多个windows操作系统版本上?如果由于系统上的字体更大或系统的DPI与您预期的不同而导致UI变得混乱,那么您应该做以下几件事: 不要使用固定的坐标和大小 一定要使用停靠和锚定来定位和调整控

通常我会创建一个winforms应用程序,当我运行它时,一切看起来都很棒。然后我走到用户的电脑前,我看到标签被挤压,字体变大,导致文本被切掉等等。这是怎么回事?我怎样才能防止这种情况


我尤其在较新的windows操作系统(如windows 7等)上看到了这一点。如何使表单对所有用户都相同(或至少良好),在多个windows操作系统版本上?

如果由于系统上的字体更大或系统的DPI与您预期的不同而导致UI变得混乱,那么您应该做以下几件事:

  • 不要使用固定的坐标和大小
  • 一定要使用停靠和锚定来定位和调整控件的大小
  • 请根据控件的内容使用“自动调整大小”来调整控件的大小
  • 请使用
    Graphics.MeasureString()
    计算字符串的大小,而不是假定字符串大小
编辑


当然,也可以分发字体(如果合法的话),以确保提供正确/预期的字体,但您仍然需要预测各种DPI设置。

这样DPI就可以将其弄乱,使用于放入特定空间的文本不再适合?我希望所有的东西都能和dpi一起扩展……是的,我也会,但不幸的是,并不是所有的开发人员都考虑了dpi的变化。只需更改DPI并启动Visual Studio。只要存在以像素表示的固定大小,用户就会受到影响。再看看这个问题: