Code Bye

窗体尺寸设置产生偏差的Bug

刚刚发现一个问题,不知道是不是Bug。
当窗体的FormBorderStyle设置为FixedSingle、FixedDialog时,假如在代码中有修改窗体的Size,则会产生偏差。
1、新建WinForm应用程序,在窗体设计器中,设置Form1的FormBorderStyle为FixedSingle,然后添加一个Button,使其距离窗体的边距相等,如下图。

2、当前窗体Size为:300, 160,在Form1.Load事件下,再次设置Size属性为:300, 160
        private void Form1_Load(object sender, EventArgs e)
        {
            this.Size = new Size(300, 160);
        }

3、按F5启动,窗体显示正常

4、打开项目生成的程序文件,运行,窗体尺寸出现偏差。

解决方案

1

经测试一切正常
win7 vs2013 .net4

1

撸主,讨论这个意义何在?
看你的两幅图片,赶脚Form尺寸好像没什么差别,是按钮的Location不同。

10

清理一下解决方案重新编译试试?
Size属性 是全部包括边框的大小
而假如在不同主题上 每个窗体的边框是不同的
所以 假如要精确的控制你窗体大小 最好考虑一下边框的问题
还有 你运行的时候 在窗体的Load里面 MessageBox 弹出一下Size和ClientSize 看看
看看 你直接运行的时候ClientSize和你F5运行的Size是不是一样的?
更具QQ截图大小来判断 你第二个窗体 没有算右边和下边的边框

5

单击按钮设置窗体Size的代码换成下面的,试试
this.MinimumSize = new Size(300, 160);;

5

要不你试试点击按钮的时候设置一下按钮的Margin属性?

1

为什么两次运行后的窗体风格(Theme)不一样?太奇葩了

5

引用:

要不你试试点击按钮的时候设置一下按钮的Margin属性?

http://www.cnblogs.com/slyzly/articles/1965965.html

10

假如你改变 windows 系统主题设置,你在”右边exe直接运行“的结果就会看到巨大的变化。
例如说你从window7改到windows8,窗体风格和宽度也不一样。
vs设计器只能给你一个前篇一律的预览,并不会随着宿主windows的设置而改变。特别是假设多人合作开发,有的人用 windows xp,有的人用windows 10,共同开发同一个项目,那么在 vs 上只能看到一个千篇一律的预览窗体。真正窗体的样式、文字大小、颜色、透明效果等等,在运行时随着每一个用户的windows操作系统、主题设置的不同,就会稍有不同的。

1

这个不同,你应该”习惯“,而不是惊奇。

1

找到了,设置按钮的属性Anchor,太久没搞winfrom这块的了。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明窗体尺寸设置产生偏差的Bug