[英]Visual C# 2010 Express: Same Form But Different Size on Win7 and WinXP
我在Win7和XP上都使用Visual C#Express 2010。
我有一个Windows Form Application项目,并且有SevenXPForm(继承自Form)。
我是在Win7的Visual C#Express 2010中创建的,然后在“属性”面板中进行设置
.MinimumSize = 300, 300
.Size = 300, 300
TabControl位于窗体的中间:
但是,当我保存项目/解决方案并在WinXP上的Visual C#Express 2010中打开时,大小更改为:
.MinimumSize = 300, 279
.Size = 300, 279
而且TabControl不再是Form的中间部分:
当我再次在Win7上打开它时,它又回来了。
这困扰着我,因为我的应用程序有望在XP和Seven(以及Vista)上运行。
我是否需要设置一些东西使其在Win7和WinXP上表现完全相同?
彼得
您看到的问题是Windows XP和Windows 7之间窗体周围的边框不同。这导致窗口大小不同。 .NET尝试解决此问题的方法是,而不是保存在属性对话框中看到的窗口大小,而是实际上保存ClientSize
,即窗口的内部大小。 在属性对话框中看到的是将大小转换为包括外边界的大小。 这意味着,当您在边框较小的Windows XP上打开项目时,.NET会尝试进行调整。
您似乎看到的问题是转换中的问题。 它似乎确实考虑到较小的垂直尺寸,但没有考虑较小的水平尺寸。
关于您的工作。 解决特定问题/解决方案的另一种方法不是自动调整选项卡控件的大小,而是让.NET为您完成此操作。 如果将Padding
在表格中,例如10, 10, 10, 10
,并设置Dock
标签控制来Fill
,你会得到同样的效果。
不过,我在这里看不到一般的解决方案,因为如果.NET本身在转换中遇到问题,这将变得非常困难。
请看一下这个链接:
http://msdn.microsoft.com/en-us/library/ms229605.aspx
-
快速浏览
自动缩放使在一台具有特定显示分辨率或系统字体的计算机上设计的表单及其控件可以在另一台具有不同显示分辨率或系统字体的计算机上正确显示。 它确保该窗体及其控件将智能地调整大小,以与用户和其他开发人员的计算机上的本机窗口和其他应用程序一致。 与每个用户计算机上的本机Windows应用程序相比,.NET Framework对自动缩放和视觉样式的支持使.NET Framework应用程序可以保持一致的外观。
这是个老问题,但是在Google中,所以我有一个答案,该答案可能对其他人有用,所以我将与大家分享(对不起,我的英语)。
1)画一个面板1
2) panel1.Dock = DockStyle.Fill
Form1_Load部分中的panel1.Dock = DockStyle.Fill
;
3)现在,无论您使用的是哪种操作系统(Win XP或7),都可以使用panel1的width和height获取Form1的实际宽度和高度,而无论边框样式如何。
经过大量谷歌搜索后,我仍然找不到解决方案。 但是我确实有一个解决方案可以部分解决我的问题:
private void SevenXPForm_Load(object sender, EventArgs e)
{
tabControl1.Width = this.ClientSize.Width - tabControl1.Left * 2;
tabControl1.Height = this.ClientSize.Height - tabControl1.Top * 2;
}
这只是一个解决方法,我认为应该有一个更好的方法。
(如果表单上有很多控件该怎么办?当然,我们可以将一个面板作为表单的唯一子控件,然后将所有其他控件添加到该面板中,虽然可行,但这太繁琐了)
一个更可靠的解决方法是将整个表单的内容放入一个面板中,并设置对接以填充,然后像在该面板中那样排列所有内容。 在解决此问题之前(假设确实如此),我建议您对所创建的每种表单都理所当然地进行此操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.