繁体   English   中英

Visual Studio 2005 设计器移动控件并调整窗体大小

[英]visual studio 2005 designer moves controls and resizes Form

当我在 Visual Studio 2005 (c#) 中打开表单时,设计器会自动调整表单大小并移动/调整控件大小,而根本不接触设计器。 源文件已更改,当我关闭设计器时,系统要求我保存 *.cs 文件。 我试图研究 Visual Studio 选项,但没有任何成功。 有任何想法吗? 视觉工作室设置或什么? 谢谢,塔尔

我今天大部分时间都在研究这个问题,发现了一些有趣的事情: 问题的主要来源似乎是依赖于锚定。 如果我使用停靠来定位我的控件,而不是锚定,我的问题似乎就会消失。 我找到了 2003 年(!)的几篇博客文章,其中详细介绍了如何使用停靠而不是锚定,并解释了锚定如何破坏 Windows 窗体设计器。 看起来这个问题可能已经超过 7 年了!

以下是帖子:

这是由于AutoScaleMode -property。 您的表单设计的 DPI 或字体设置可能与您现在在 Windows 显示设置中的设置不同。 AutoScaleMode -property 有 4 个不同的可能值: DpiFontInheritNone DpiFont模式下,您的表单和控件将根据窗口显示设置自动调整大小。

因此,在所有表单和控件中将AutoScaleMode -property 设置为None ,它们将不再自动调整大小。 尝试设计您的表单,以便在每个控件中留出足够的空间,以便即使文本大小设置为 125% 也能容纳文本。

我找到了解决办法。

不知道后面会发生什么,但我改变了我的显示属性。 它工作正常。 这是顺序:显示属性->设置选项卡->高级。 在高级对话框中,我将“DPI 设置”从大 (120dpi) 更改为普通 (96 dpi)

在复杂的 TabControls 中锚定在顶部、左侧和右侧的控件也有同样的问题。 每次我打开表单时,visual studio 表单设计器都会增加所有嵌套控件的宽度。

由于这篇文章,我找到了一个简单的解决方法。 我只是向每个选项卡添加了一个面板,并将它们的停靠属性设置为填充。 选项卡内的所有现有控件都移动到这些面板内。 即使控件固定在顶部、左侧和右侧,这也有效。

至少适用于 Visual Studio 2013 和 2015。

这是你应该忍受的。 即使在 VS2008 中,这样的事情也时有发生。 它主要取决于表单内容(控件、位置等),并且 VS 中没有选项可以禁用此类行为。

当您在设计器中打开表单时,vs 运行时会从背后的代码重建视觉外观。 有时它会在这一刻做出改变。 此外,当您只是向表单添加一个控件时,设计器会完全重建代码隐藏和资源文件。 这是众所周知的问题,似乎 MS 不会修复它,因为它们朝着 WPF 方向移动。

所以有几点可以简化你的生活:

  1. 移至 VS2008,设计器更加一致,但仍将 .designer.cs 文件中的控件打乱
  2. 将您的代码放在源存储库之一中,因此如果您不小心保存了此类表单,您可以从存储库中恢复它。

将表单最小和最大大小设置设置为当前大小对我来说是一个很好的解决方法。 这阻止了 VS 调整它的大小。

我有一个简单的表单,上面几乎没有控件,只要在 VS2013 设计器中打开表单,底部的 OK 和 Cancel 就会向上移动。 在 VS2015 中观察到相同的行为。

DPI 在这里接受的答案并没有解决我的问题,也没有关于表单/填充/边距的大小的任何问题。

删除移动的控件并将它们重新添加到表单中解决了我的问题,正如 ptutt 建议的那样: Visual Studio 设计器移动控件并在打开表单时添加网格列

虽然我很欣赏 ryantum 的建议和使用对接 [带面板] 的链接,正如上面与 Roland 的博客文章https://weblogs.asp.net/rweigelt/28984的链接中所提到的,我宁愿做一些微不足道的事情只需删除/重新添加即可让它消失。

我发现从格式菜单锁定控件是一个简单而有效的解决方案。 VS2013

我在 VS 2015 中遇到了这个问题。我使用了带有控件的停靠面板,这些控件作为他们的孩子意外移动。 默认情况下,控件将向左对齐,但您可以更改方向。 我的按钮停止移动。

我也有这个问题。 每次我打开设计器时,每个带有“right”锚点的框都会向左移动大约 20 像素。 此外,每个带有“左”锚点的框的底部都在表单外约 200 像素处。

这个表单有很多控件,不应该在较小的显示器上缩小,所以它被设置为自动滚动,表单本身在设计器中小于显示的最小尺寸(历史上......)。 我只是将尺寸设置为最小尺寸,这样设计器中就不会出现滚动条,并且锚点可以按预期工作而不会弄乱位置。

我阅读了 ryantm 的回答中的第一篇文章,这让我找到了解决方案。 显然它与 .Net 执行事件的顺序有关,例如设置表单的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM