我用的windows10,visual studio 2015,基于.net framework 4,写桌面程序,一个普通的winform窗体,里面有一些常用的诸如label,button,combobox控件,有些用的默认字体,有些我设置了稍大的字体,比如12pt,18pt什么的。问题是在另外一台电脑上发现,存在控件重叠啊被阻挡啊等等问题,看了网上资料,应该和分辨率、DPI等有关,然后,我试过把窗体的AutoScaleMode为None、Font、Dpi和Inherit,好像都是存在这个问题的,也就是另外一台电脑还是窗体中的显示布局乱了。我的原始设想,首先,我无所谓分辨率大小,因为我将窗体设置为用户无法调整大小(controlbox为false),而且size足够小,主流显示器分辨率都能足够显示我的窗体(换句话说,过小的显示器分辨率,不在我的考虑支持范围之内)。然后,我希望,不管系统DPI怎么改变,我的程序,在所有系统中运行的行为,就好像是在我的开发机上表现得那样(或者差不多也可以,每个控件我可以稍微留一点余量),不知道是否可以做到?谢谢。我试过在开发机上调整DPI,比如从100%修改为125%,重启,然后,好像也是正常显示的。有点晕了,到底问题的关键是什么呢?显示器分辨率(以像数为单位),DPI(Dots Per Inch,不知道Dots在这里就是被解释为Pixels吗), font size(以Pt为单位,这是个物理尺寸单位还是像数单位?),显示器物理尺寸(比如以inch为单位),还有form size(是以像数为单位吗),之间的换算关系到底是什么呢?然后windows有主动帮忙做了哪些自动调整?然后,可能我才能明白我能如何解决这个问题,谢谢。
https://blog.csdn.net/xianfajushi/article/details/83867006看我这篇文章.
vs 的布局是基于 GDI 的
当然两套系统间存在简单的比例关系,也就是可以相互转换的看了好几遍主贴,一直没搞清楚楼主究竟遇到了什么问题
再随意的布局,都不会在不同分辨率下出现混乱。不同分辨率只会造成部件的视觉尺寸不同,并不会改变部件间的比例关系
显然是楼主一厢情愿的做了某种安排(并且是错误的),却将问题归咎于分辨率的变化
https://stackoverflow.com/questions/12123073/winforms-different-sizes-in-different-environments主要目前我还没有可以复现问题的机器环境,那个有问题机器我就看了个截图
我看了一下,这个属性就是默认false的
我的TextBox也是设置为多行。
AutoScaleMode这个属性从来就不用去弄,都是默认的就没出现过问题。
原因是font和dpi的设置对应的是两个windows特性:
基于dpi的缩放基于字体放大的缩放
在windows8以前是没有基于dpi的缩放的,但是在Windows8之后对基于文本的缩放做的又不好。
所以建议你关闭缩放自己内部使用类似zoom的东西对你的窗口进行一次性的变更,你这个情况很适用我之前发的一篇帖子:
https://bbs.csdn.net/topics/392344412当然你也可以看看微软的解决方案,尝试新方法,但是这需要的时间就比较多了:
https://bbs.csdn.net/topics/392396889
原因是font和dpi的设置对应的是两个windows特性:
基于dpi的缩放基于字体放大的缩放
在windows8以前是没有基于dpi的缩放的,但是在Windows8之后对基于文本的缩放做的又不好。
所以建议你关闭缩放自己内部使用类似zoom的东西对你的窗口进行一次性的变更,你这个情况很适用我之前发的一篇帖子:
https://bbs.csdn.net/topics/392344412当然你也可以看看微软的解决方案,尝试新方法,但是这需要的时间就比较多了:
https://bbs.csdn.net/topics/392396889
谢谢,看了你的代码,感觉要解决的问题,和我稍微有点不同。大致来说,我这边控件相对位置没有那么重要,问题是在,单个控件内部的文字被截断或者换行了。
我一开始也都是用的默认,发现有些系统说问题,然后网上搜索了一下,看到要设置为none,没有想到,none后其实问题还是在有些系统中存在的
https://pan.baidu.com/s/1o_JuItFWuzoFbC9iO3c5uw