• 解决.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   : 根据类的父类的缩放模式控制缩放。如果不存在父类,则禁用自动缩放。

  • 相关阅读:
    【iBoard电子学堂开发板例程】【12个 stm32 例程发布】
    【iCore双核心组合是开发板例程】【12个 verilog 中级实验例程发布】
    【新产品发布】【iHMI43 智能液晶模块 2013 版】
    【新产品发布】【EVC8001 磁耦隔离式 USB 转 RS-485】
    【iHMI43真彩液晶模块】发布新版 DEMO 软件包,版本号为 0.14
    【新产品发布】【iCore2 ARM / FPGA 双核心板】
    急性淋巴瘤化疗术后高热不退案
    产后便秘案
    药疹治案
    胃癌化疗后急救案
  • 原文地址:https://www.cnblogs.com/4kapple/p/2694356.html
Copyright © 2020-2023  润新知