c# - Visual C# 2010 速成版 : Same Form But Different Size on Win7 and WinXP

标签 c# windows forms size

我在 Win7 和 XP 上都使用 Visual C# Express 2010。

我有一个 Windows 窗体应用程序项目,并且有一个 SevenXPForm(继承窗体)。

我在 Win7 的 Visual C# Express 2010 中创建它,并在属性面板中设置

.MinimumSize = 300, 300
.Size = 300, 300

在窗体中间有一个 TabControl:

alt text

但是,当我保存项目/解决方案并在 WinXP 上的 Visual C# Express 2010 中打开时,大小更改为:

.MinimumSize = 300, 279
.Size = 300, 279

并且 TabControl 不再位于表单的中间:

alt text

当我再次在 Win7 上打开它时,它又回来了。

这让我很困扰,因为我的应用程序需要在 XP 和 7(以及 Vista)上运行。

我是否必须设置一些东西才能让它在 Win7 和 WinXP 上表现完全相同?

彼得

最佳答案

您看到的问题是窗体周围的边框在 Windows XP 和 Windows 7 之间不同。这会导致窗口大小不同。 .NET 试图解决这个问题的方法是,它不会像您在属性对话框中看到的那样保存窗口的大小,而是实际保存 ClientSize,这是窗口的内部大小。您在属性对话框中看到的是转换为包括外边框的大小。这意味着当您在边框较小的 Windows XP 上打开项目时,.NET 会尝试进行调整。

您看到的问题似乎是转换过程中的问题。它似乎确实考虑了较小的垂直尺寸,但没有考虑较小的水平尺寸。

关于你的工作。针对您的特定问题/解决方案的另一种方法不是自动调整选项卡控件的大小,而是让 .NET 为您执行此操作。如果您将表单的 Padding 设置为例如10, 10, 10, 10 并将选项卡控件的Dock设置为Fill,你会得到同样的效果。

虽然我在这里没有看到通用的解决方案,因为如果这是 .NET 本身进行的转换中的一个问题,这将变得非常困难。

关于c# - Visual C# 2010 速成版 : Same Form But Different Size on Win7 and WinXP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4030672/

相关文章:

c# - 我如何测试是否已收到 MVVM 轻量级消息并对其采取行动?

forms - 如何允许用户在Grails中开发的博客文章中发表评论

c# - 使用 LINQ 获取第一个排序元素? (C#)

c# - 当编码以 + 开头时,Base64 解码中断

windows - 在不禁用 Hyper V 的情况下在 Windows 8 上运行 VM

windows - 如何在golang中获取英文错误信息?

Windows Azure REST API MediaLink

javascript - 从指令调用 ngSubmit

sharepoint - InfoPath 不允许我为列表自定义表单

c# - Eazfuscator.NET 出现一个或多个错误 --> 索引超出范围