我在Win7和XP上都使用了Visual C#Express 2010。
我有一个Windows窗体应用程序项目,并有SevenXPForm(inheritance窗体)。
我在Win7的Visual C#Express 2010中创build了它,并在属性面板中设置了它
.MinimumSize = 300,300 .Size = 300,300
而一个TabControl是在窗体的中间:
delphi – 计算目录大小API?
linux命令xargs:它传递的参数的最大大小?
我怎样才能确定一个pid_t的最大值?
C#应用程序GUI在不同的Windows图标/文本大小设置上打破
如何在Windows中拆分大文本文件?
但是,当我保存项目/解决scheme,并在WinXP的Visual C#Express 2010中打开时,大小更改为:
.MinimumSize = 300,279 .Size = 300,279
TabControl不再是表单的中间:
当我再次打开Win7时,它回来了。
这是困扰我,因为我的应用程序预计将在XP和七,(和Vista)。
我必须设置一些东西,让它在Win7和WinXP上的performance完全一样吗?
彼得
什么部分组成了可执行文件的大小?
如何在Linux中设置目录大小限制?
Windows上的string大小与Linux上不同
为什么BSS段默认为“16”?
如何在上传过程中停止超大file upload?
你所看到的问题是Windows XP和Windows 7之间的窗体边界有所不同。这会导致窗口大小不同。 .NET试图解决这个问题的方法不是像在属性对话框中看到的那样保存窗口的大小,而是实际保存ClientSize ,它是窗口的内部大小。 您在属性对话框中看到的大小被转换为包含外部边框的大小。 这意味着当您在具有较小边界的Windows XP上打开该项目时,.NET会尝试进行调整。
您看到的问题看起来是转换中的问题。 它似乎考虑到较小的垂直尺寸,但较小的水平尺寸未被考虑在内。
关于你的工作。 对于特定的问题/解决方案,不同的方法不是自动调整选项卡控件的大小,而是让.NET为您做这个。 如果您将表单的Padding设置为例如Dock并将选项卡控件的Dock设置为Fill ,您将获得相同的效果。
虽然我没有在这里看到一个通用的解决方案,因为如果这是.NET本身所做的转换中的一个问题,这变得非常困难。
谷歌搜索了很多,我仍然无法找到解决方案。 但是我有一个解决方法来部分解决我的问题:
private void SevenXPForm_Load(object sender,EventArgs e) { tabControl1.Width = this.ClientSize.Width - tabControl1.Left * 2; tabControl1.Height = this.ClientSize.Height - tabControl1.Top * 2; }
(如果表单上有很多控件呢?当然,我们可以把一个面板作为表单的唯一子控件,然后将所有其他控件添加到这个面板中,但是这太麻烦了)
一个更强大的解决方法是将整个表单的内容放入一个面板中,并将对接集填充,然后将所有内容排列在该面板中。 在这个问题得到解决之前 – 假设它曾经是 – 我建议你为每一个你创建的表单做这件事。
请看这个链接:
http://msdn.microsoft.com/en-us/library/ms229605.aspx
–
快速浏览
自动缩放功能可以在一台具有一定显示分辨率或系统字体的机器上设计一个窗体及其控件,以便在具有不同显示分辨率或系统字体的另一台机器上正确显示。 它确保窗体及其控件将智能调整大小,以与用户和其他开发人员的机器上的本机窗口和其他应用程序保持一致。 .NET Framework对自动缩放和可视样式的支持使得.NET Framework应用程序与每个用户机器上的本机Windows应用程序相比,可以保持一致的外观。
这是一个古老的问题,但它是在谷歌,所以我有一个答案,这可能是有用的,所以我会分享(对不起,我的英语)。
1)画一个panel1
2) panel1.Dock = DockStyle.Fill在Form1_Load部分;
3)现在您可以使用panel1的宽度和高度来获取Form1的实际宽度和高度,无论您使用的是哪种操作系统(Win XP或7),无论是表单边框样式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。