zoukankan      html  css  js  c++  java
  • 解决.net绘制的 WinForm 在 windows7下变形的方法

    问题描述:
    一个winform的系统,我和同事通过vss共同开发,同事的系统是XP,我的系统是windows7,开发工具都是vs.net2008 sp1。 
    奇怪的是程序的主界面在同事的机器上正常,在他的vs.net设计视图中也显示正常,而到了我这里有的控件高度比设定的高度多出1-8个像素,f5运行也和实际效果不一样比实际效果大,查看 frmBase.designer.cs,里面控件的高度确实是原先设置的正确高度,但把vs.net切换到设计视图,这个控件高度就变大了,从“属性”窗口中看它的值也变大了。 
    以前也出现过这种问题,最后在我的机器(windows7)下重新调整各控件的高度,这才使软件在xp和windows7下运行的界面大小一致。但最近这个问题有出现了,不知道是怎么回事。

    解决方法: 
    1、将主窗体的 AutoScaleMode 属性设置为 None,CTRL+S保存一下,在将其关闭。 
    2、打开主窗体的 xxx.designer.cs,找到 InitializeComponent 方法中的倒数第二行“ this.ResumeLayout(false);”,将其删除。 
    3、在打开主窗体,此时的控件大小就是designer.cs设置的大小。随便找个控件,用鼠标拖动其改变大小,然后在手工把大小设置为原来的大小。这样做的目的是让vs.net更新designer.cs并创建“this.ResumeLayout(false);”。 
    4、搞定了,界面在xp和windows7上完全一样

    这里说说AutoScaleMode属性的用法:

       ① None : 禁用自动缩放。(默认时)

       ② Font :根据类使用的字体(通常为系统字体)的维度控制缩放。

           如果希望控件或窗体根据操作系统中字体的大小进行拉伸或缩小,则按 Font 缩放十分有用,如果控件或窗体的绝对大小无关紧要,则应使用这种方式进行缩放。

    例子:

    新建一个winform,字体为 ‘宋体 9pt’,上面还有一个button,用来参考的.

    然后,先改变winform的字体大少,就改为‘宋体 16pt’吧。

    这时候,连按钮都变大了。。

       ③ Dpi : 根据显示分辨率控制缩放。常用分辨率为 96 和 120 DPI。

           如果要相对于屏幕确定控件或窗体的大小,则按 Dpi 缩放十分有用。例如,对于显示图表或其他图形的控件,可能希望使用每英寸点数 (DPI) 缩放,以便该控件始终占据一定百分比的屏幕

    ④ Inherit   : 根据类的父类的缩放模式控制缩放。如果不存在父类,则禁用自动缩放。

  • 相关阅读:
    linux面试常问命令
    图卷积网络 GCN Graph Convolutional Network(谱域GCN)的理解和详细推导
    总结一些牛客网上 的算法岗面试题
    Pytorch-Tensor基本操作
    C++使用代码创建一个Windows桌面应用程序
    Windows中的消息与消息队列
    解决COM组件在WPF设计器中命名空间不存在XXX的问题(附带如何在WPF中使用APlayer引擎)
    Mybatis的一级缓存
    面试题:zookeeper实现分布式锁
    sublime text 文件默认打开格式
  • 原文地址:https://www.cnblogs.com/4kapple/p/2694356.html
Copyright © 2011-2022 走看看