Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Winforms 为什么我的对话框在某些(但不是全部)Windows7计算机上太小?_Winforms_Visual Studio 2008_Windows 7_Dpi - Fatal编程技术网

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

Winforms 为什么我的对话框在某些(但不是全部)Windows7计算机上太小?,winforms,visual-studio-2008,windows-7,dpi,Winforms,Visual Studio 2008,Windows 7,Dpi,我开始在Windows7上测试Winforms(使用VS2008)应用程序,发现一个奇怪的问题 它在前两次Win7安装中运行良好,但在接下来的两次安装中,我的许多对话框都太小,内容缩减了约30% 该应用程序是在WinXP上开发的,在任何XP安装上都没有发现这个问题 刚刚开始调查问题-没有任何关于工作系统和未工作系统之间差异的细节 编辑 根据Kate对其中一个答案的评论,Win7有时会在安装新显示器时更改为自定义文本大小。有问题的机器有一个大的宽屏显示器,当我们检查(控制面板+显示器+自定义文本大

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

它在前两次Win7安装中运行良好,但在接下来的两次安装中,我的许多对话框都太小,内容缩减了约30%

该应用程序是在WinXP上开发的,在任何XP安装上都没有发现这个问题

刚刚开始调查问题-没有任何关于工作系统和未工作系统之间差异的细节

编辑

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

然后,通过将文本大小设置为125%,我可以在WinXP上复制这个问题

因此,现在的问题变成了-如何确保Winforms应用程序“与自定义文本大小无关”?

/Edit

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


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

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

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


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

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

将窗体设置为“固定对话框”时,请在窗体上设置以下属性:。AutoScaleMode=Font.AutoSize=True.AutoSizeMode=grow仅允许windows根据子元素的大小调整窗体的大小


控制面板+显示器,设置自定义文本大小。使用Form.AutoScaleMode。看起来您的Win7机器既有主题(标题栏不是Aero)又有字体放大。你需要照Hans说的做。AutoScaleMode的建议设置是什么?此外,AutoSizeMode属性在这里也能发挥作用吗?主题、本地化和屏幕效果是额外的可能性,但是,是的,字体放大也是我的猜测。屏幕截图可以帮助我们缩小可能性。发生这种情况的机器和不发生这种情况的机器的分辨率是多少?如果你的屏幕很大,Windows7会为你设置DPI。你需要让你的应用程序知道DPI。@凯特-看来你已经找到了根本原因。有问题的机器有一个大的宽屏显示器,当我们检查时,果然,自定义文本大小设置为125%。将其设置为100%可以解决问题。@Tom根据您的用户群,告诉他们如何将其恢复到100%可能就足够了,但我认为这是一个权宜之计,直到您可以更改代码,使应用程序在任何DPI上都看起来很棒。@Kate-我更新了问题。有关于让我的应用程序DPI感知的提示吗?如果你想要投票的话,把它写下来作为一个答案,而不是一个评论……我不明白你所说的“用绝对坐标来布置你的控件,并放大你的表格来包含结果”是什么意思。这些是我需要做的事情吗?如果是,怎么做?或者,您是说,这只是设置自动缩放模式的结果?如能澄清,将不胜感激!谢谢…如果您使用的是Visual Studio设计模式,只需拖动控件,使其在编辑器中看起来正确。设计文件将包含尺寸的绝对坐标(像素)。如果设置了
AutoScaleMode=AutoScaleMode.Font
,则容器将根据运行时字体放大率调整自身大小,而无需执行任何操作。控件已经做到了这一点;注意分组框和下拉菜单如何调整大小以包含更大的文本?我有一个稍微不同的问题——在大多数情况下,我的表单在125%和150%中太大了——在其他情况下,布局都很疯狂(单选按钮彼此重叠,等等)——更糟糕的是,AutoScaleMode似乎已经设置为字体…——我试过DPI、字体和继承——似乎都没有效果。我使用的是停靠控件,但它们之间似乎有125%的差距——还有其他想法吗?(编辑我上面的[已经5分钟了],对不起)——“没有”似乎也没有效果。@brainslaugs83;还有其他东西可以改变布局;发布带有屏幕截图的问题。