【问题标题】:Why are my dialog boxes too small on some (but not all) Windows7 computers?为什么我的对话框在某些(但不是全部)Windows7 计算机上太小?
【发布时间】:2011-10-22 10:50:10
【问题描述】:

我开始在 Windows 7 上测试 Winforms(使用 VS2008)应用程序,发现一个奇怪的问题。

在前两次安装 Win7 时运行良好,但在接下来的两次中,我的许多对话框都太小了,将内容裁剪了大约 30%。

该应用程序是在 WinXP 上开发的,并且在 任何 XP 安装中都没有发现此问题!

刚刚开始调查问题 - 没有任何关于可用系统与尚未运行系统之间差异的详细信息。

编辑

根据 Kate 对其中一个答案的评论,Win7 有时会在安装新显示器时更改为自定义文本大小。有问题的机器有一个大的宽屏显示器,当我们检查(控制面板 + 显示 + 自定义文本大小)时 - 果然 - 自定义文本大小设置为 125%。将其设置为 100% 即可解决问题。

然后通过将文本大小设置为 125%,我能够在 WinXP 上复制该问题。

所以现在的问题变成了 - 如何确保 Winforms 应用程序“独立于自定义文本大小”?

/编辑

按照建议,这里有一些屏幕截图。第一个来自 Windows 7 计算机,第二个来自我的 WinXP 开发系统。

【问题讨论】:

  • 控制面板+显示,设置自定义文字大小。使用 Form.AutoScaleMode。
  • 看起来你的Win7机器既有主题(标题栏不是Aero)又有字体放大。你需要按照汉斯所说的去做。
  • AutoScaleMode 的推荐设置是什么?另外,AutoSizeMode 属性也可以在这里发挥作用吗?

标签: winforms visual-studio-2008 windows-7 dpi


【解决方案1】:

显示尺寸、分辨率、DPI、大字体、小字体是一些可能的原因。

【讨论】:

  • 主题、本地化和屏幕效果是额外的可能性,但是,是的,字体放大也是我的猜测。屏幕截图将帮助我们缩小可能性。
  • 发生这种情况和不发生这种情况的机器上的分辨率是多少?如果您的屏幕非常大,Windows 7 会为您设置 DPI。您需要让您的应用了解 DPI。
  • @Kate - 看起来你已经确定了根本原因。有问题的机器有一个大的宽屏显示器,当我们检查时,果然,自定义文本大小设置为 125%。将其设置为 100% 即可解决问题。
  • @Tom 取决于您的用户群,告诉他们如何将其恢复到 100% 可能就足够了,但我认为这是权宜之计,直到您可以进行代码更改以使应用程序看起来很棒在任何 DPI。
  • @Kate - 我已经更新了问题。让我的应用了解 DPI 的任何提示?如果您想要投票,请将其写为答案,而不是评论...
【解决方案2】:

虽然屏幕 DPI 和主题都可以更改控件的大小,但这不是问题,因为在您的屏幕截图中,窗口镶边和非文本控件的大小没有改变。问题是您没有考虑自定义字体大小。

如果您想移动控件以将它们固定为固定的表单大小,则必须使用控件的Control.AutoScaleDimensions 属性执行计算。工作量很大,不要那样做。

相反,使用绝对坐标布置控件并放大表单以包含结果。设置表单的AutoScaleMode = AutoScaleMode.Font

【讨论】:

  • 我不明白您所说的“使用绝对坐标布置控件并放大表单以包含结果”是什么意思。我需要以编程方式做这些事情吗?如果是这样,怎么做?或者您是说这仅仅是设置 AutoScaleMode 的结果?澄清将不胜感激!谢谢...
  • 如果您使用 Visual Studio 设计模式,只需拖动控件使其在编辑器中看起来正确。设计文件将包含尺寸的绝对坐标(像素)。如果您设置AutoScaleMode = AutoScaleMode.Font,则容器将根据运行时字体放大倍数调整自身大小,而无需您执行任何操作。控件已经这样做了;请注意 GroupBox 和下拉菜单如何调整自身大小以包含更大的文本?
  • 我遇到了一个稍微不同的问题——在大多数情况下,我的表单在 125% 和 150% 中都太大了——在其他情况下,布局都很疯狂(单选按钮最终位于彼此等)——更糟糕的是,AutoScaleMode 似乎已经设置为 Font...——我尝试过 DPI、Font 和 Inherit——似乎没有任何效果。我正在使用停靠控件,但它们之间似乎存在 125% 的巨大差距——还有其他想法吗?
  • (编辑到我上面的[已经 5 分钟],抱歉)——“无”似乎也没有效果。
  • @BrainSlugs83;还有其他可以改变布局的东西;用屏幕截图发布问题。
【解决方案3】:

当 Win 7 用户在“控制面板\所有控制面板项\显示”中调整默认字体大小时,我遇到了同样的问题

当您将表单设置为“固定对话框”时,请在表单上设置以下属性:.AutoScaleMode=Font .AutoSize=True .AutoSizeMode=GrowOnly,以便窗口可以根据子元素的大小调整表单的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    • 2021-08-04
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多