为什么我的对话框在某些(但不是全部)Windows7计算机上太小?

时间:2011-08-08 14:22:10

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

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

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

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

刚开始调查问题 - 没有关于有效系统与尚未实现的系统之间差异的任何细节。

修改

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

然后我可以通过将文本大小设置为125%来复制WinXP上的问题。

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

/修改

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

Windows 7

Windows XP

3 个答案:

答案 0 :(得分:3)

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

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

AutoScaleMode=Font AutoSize=True AutoSizeMode=GrowOnly

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

如果要移动控件以将其固定为固定的表单大小,则必须使用控件的Control.AutoScaleDimensions属性执行计算。这是很多工作,不要这样做。

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