刚刚发现一个问题,不知道是不是Bug。
当窗体的FormBorderStyle设置为FixedSingle、FixedDialog时,假如在代码中有修改窗体的Size,则会产生偏差。
1、新建WinForm应用程序,在窗体设计器中,设置Form1的FormBorderStyle为FixedSingle,然后添加一个Button,使其距离窗体的边距相等,如下图。
2、当前窗体Size为:300, 160,在Form1.Load事件下,再次设置Size属性为:300, 160
当窗体的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
win7 vs2013 .net4
1
撸主,讨论这个意义何在?
看你的两幅图片,赶脚Form尺寸好像没什么差别,是按钮的Location不同。
看你的两幅图片,赶脚Form尺寸好像没什么差别,是按钮的Location不同。
10
清理一下解决方案重新编译试试?
Size属性 是全部包括边框的大小
而假如在不同主题上 每个窗体的边框是不同的
所以 假如要精确的控制你窗体大小 最好考虑一下边框的问题
还有 你运行的时候 在窗体的Load里面 MessageBox 弹出一下Size和ClientSize 看看
看看 你直接运行的时候ClientSize和你F5运行的Size是不是一样的?
更具QQ截图大小来判断 你第二个窗体 没有算右边和下边的边框
Size属性 是全部包括边框的大小
而假如在不同主题上 每个窗体的边框是不同的
所以 假如要精确的控制你窗体大小 最好考虑一下边框的问题
还有 你运行的时候 在窗体的Load里面 MessageBox 弹出一下Size和ClientSize 看看
看看 你直接运行的时候ClientSize和你F5运行的Size是不是一样的?
更具QQ截图大小来判断 你第二个窗体 没有算右边和下边的边框
5
单击按钮设置窗体Size的代码换成下面的,试试
this.MinimumSize = new Size(300, 160);;
5
要不你试试点击按钮的时候设置一下按钮的Margin属性?
1
为什么两次运行后的窗体风格(Theme)不一样?太奇葩了
5
http://www.cnblogs.com/slyzly/articles/1965965.html
10
假如你改变 windows 系统主题设置,你在”右边exe直接运行“的结果就会看到巨大的变化。
例如说你从window7改到windows8,窗体风格和宽度也不一样。
vs设计器只能给你一个前篇一律的预览,并不会随着宿主windows的设置而改变。特别是假设多人合作开发,有的人用 windows xp,有的人用windows 10,共同开发同一个项目,那么在 vs 上只能看到一个千篇一律的预览窗体。真正窗体的样式、文字大小、颜色、透明效果等等,在运行时随着每一个用户的windows操作系统、主题设置的不同,就会稍有不同的。
例如说你从window7改到windows8,窗体风格和宽度也不一样。
vs设计器只能给你一个前篇一律的预览,并不会随着宿主windows的设置而改变。特别是假设多人合作开发,有的人用 windows xp,有的人用windows 10,共同开发同一个项目,那么在 vs 上只能看到一个千篇一律的预览窗体。真正窗体的样式、文字大小、颜色、透明效果等等,在运行时随着每一个用户的windows操作系统、主题设置的不同,就会稍有不同的。
1
这个不同,你应该”习惯“,而不是惊奇。
1
找到了,设置按钮的属性Anchor,太久没搞winfrom这块的了。