winform程序在其他电脑的显示布局乱了

abcmn1234 2019-01-01 08:56:06
我用的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有主动帮忙做了哪些自动调整?

然后,可能我才能明白我能如何解决这个问题,谢谢。
...全文
1984 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
abcmn1234 2019-01-19
  • 打赏
  • 举报
回复
谢谢,不知道哪位有没有分析过,到底为什么会出现这样的问题,然后就能想方设法的解决了,谢谢。
ilikeff8 2019-01-11
  • 打赏
  • 举报
回复
没遇到过,另外,winform的话,不用限制窗口大小,布局多用panel组合,dock,锚点,比如



或者用wpf,wpf可以解决dpi不同的问题


LvBao_117 2019-01-11
  • 打赏
  • 举报
回复
文字被截断或换行,还是布局问题,在resize方法调整吧
橘子皮... 2019-01-11
  • 打赏
  • 举报
回复
客户电脑字体不是正常字体吧
  • 打赏
  • 举报
回复
这样也说不清楚,这样,我给个近期开发的软件,拿到有问题的电脑上运行一下看控件布局是否变化? https://pan.baidu.com/s/1o_JuItFWuzoFbC9iO3c5uw
abcmn1234 2019-01-10
  • 打赏
  • 举报
回复
引用 20 楼 智者知已应修善业 的回复:
在10里面改变从100-175%之间进行切换,未发现布局变化。 我的TextBox也是设置为多行。 AutoScaleMode这个属性从来就不用去弄,都是默认的就没出现过问题。
我一开始也都是用的默认,发现有些系统说问题,然后网上搜索了一下,看到要设置为none,没有想到,none后其实问题还是在有些系统中存在的
abcmn1234 2019-01-10
  • 打赏
  • 举报
回复
引用 23 楼 胖叔叔写代码 的回复:
[quote=引用 19 楼 abcmn1234 的回复:] 是不理解font和dpi设置的区别是什么。
建议设置为none 原因是font和dpi的设置对应的是两个windows特性: 基于dpi的缩放 基于字体放大的缩放 在windows8以前是没有基于dpi的缩放的,但是在Windows8之后对基于文本的缩放做的又不好。 所以建议你关闭缩放自己内部使用类似zoom的东西对你的窗口进行一次性的变更,你这个情况很适用我之前发的一篇帖子: https://bbs.csdn.net/topics/392344412 当然你也可以看看微软的解决方案,尝试新方法,但是这需要的时间就比较多了: https://bbs.csdn.net/topics/392396889 [/quote] 谢谢,看了你的代码,感觉要解决的问题,和我稍微有点不同。大致来说,我这边控件相对位置没有那么重要,问题是在,单个控件内部的文字被截断或者换行了。
  • 打赏
  • 举报
回复
或是使用我这里代码复制运行一下看看https://blog.csdn.net/xianfajushi/article/details/83867006
  • 打赏
  • 举报
回复
引用 19 楼 abcmn1234 的回复:
是不理解font和dpi设置的区别是什么。
建议设置为none 原因是font和dpi的设置对应的是两个windows特性: 基于dpi的缩放 基于字体放大的缩放 在windows8以前是没有基于dpi的缩放的,但是在Windows8之后对基于文本的缩放做的又不好。 所以建议你关闭缩放自己内部使用类似zoom的东西对你的窗口进行一次性的变更,你这个情况很适用我之前发的一篇帖子: https://bbs.csdn.net/topics/392344412 当然你也可以看看微软的解决方案,尝试新方法,但是这需要的时间就比较多了: https://bbs.csdn.net/topics/392396889
  • 打赏
  • 举报
回复
多学学 windows 如何进行个性化设置,就算是程序员,不学习 windows 基本使用方法也不行。
  • 打赏
  • 举报
回复
引用 6 楼 zhaizj2013 的回复:
[quote=引用 3 楼 以专业开发人员为伍 的回复:]每一个桌面都可以自定义各种窗口元素的字体等等设置,你学习一下 windows 操作系统主题基本用法。 开发时通常只要针对最标准的 windows 主题进行设置。对于什么分辨率、各种(例如窗体标题、正文、下拉框等等)字体的设置不可能胡乱纠结某种固定比例。每一个用户都有可能自己去修改设置的。
直接告诉答案就行吧,,这些太专业了[/quote] 你不知道每一个 windows 桌面都可以设置各自的主题、各自窗口里各种不同元素的默认字体、大小等等个性化设置吗?
  • 打赏
  • 举报
回复
在10里面改变从100-175%之间进行切换,未发现布局变化。
我的TextBox也是设置为多行。
AutoScaleMode这个属性从来就不用去弄,都是默认的就没出现过问题。
平底锅锅锅 2019-01-02
  • 打赏
  • 举报
回复
Anchor和Dock属性检查下
abcmn1234 2019-01-02
  • 打赏
  • 举报
回复
是不理解font和dpi设置的区别是什么。
abcmn1234 2019-01-02
  • 打赏
  • 举报
回复
研究了一下,发现有问题机器的分辨率是 1280*1024, 150%放大倍数。 而我的开发机是 1920*1080, 100%放大倍数。 当我把开发机设置为1280*1024,125%的时候,发现部分label确实有问题(我的有些label是多行的,所以label的autosize设置为了false),但是,也不是所有问题都复现的。 想换个角度问,就是说,为了尽可能在不同的windows系统中可用,form的AutoScaleMode应该怎么设置呢? none,dpi,还是font的。特别的,不理解font和dpi的设置。
abcmn1234 2019-01-02
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
Form.AutoScale = false
我看了一下,这个属性就是默认false的
abcmn1234 2019-01-02
  • 打赏
  • 举报
回复
引用 12 楼 起个名字忒难 的回复:
你的问题我也遇到过,在开发机器 上没有问题,在客户机器上就是乱了,后来一查原因,客户机器上显卡驱动没有装,晕死
额额额,那是郁闷极了的,我问问去,谢谢。
abcmn1234 2019-01-02
  • 打赏
  • 举报
回复
我看网上的资料,感觉和这两个问题差不多,但是没有看明白到底怎么回事可以怎么解决。 https://stackoverflow.com/questions/13185557/my-windows-forms-application-size-is-changing-on-different-notebooks https://stackoverflow.com/questions/12123073/winforms-different-sizes-in-different-environments 主要目前我还没有可以复现问题的机器环境,那个有问题机器我就看了个截图
起个名字忒难 2019-01-02
  • 打赏
  • 举报
回复
你的问题我也遇到过,在开发机器 上没有问题,在客户机器上就是乱了,后来一查原因,客户机器上显卡驱动没有装,晕死
zhaizj2013 2019-01-02
  • 打赏
  • 举报
回复
引用 3 楼 以专业开发人员为伍 的回复:
[quote=引用 楼主 abcmn1234 的回复:]
我试过在开发机上调整DPI,比如从100%修改为125%,重启,然后,好像也是正常显示的。有点晕了,到底问题的关键是什么呢?
每一个桌面都可以自定义各种窗口元素的字体等等设置,你学习一下 windows 操作系统主题基本用法。

开发时通常只要针对最标准的 windows 主题进行设置。对于什么分辨率、各种(例如窗体标题、正文、下拉框等等)字体的设置不可能胡乱纠结某种固定比例。每一个用户都有可能自己去修改设置的。[/quote] 直接告诉答案就行吧,,这些太专业了
加载更多回复(7)

110,549

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧