18

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

4

10 回答 10

10

I have been working on this problem for most of today and found some interesting things: The main source of the problem seems to be relying on anchoring. If I use docking to position my controls, instead of anchoring, my problems seem to go away. I found a couple of blog posts from 2003(!), which detail how you might use docking instead of anchoring, and explain how anchoring can break the Windows Forms designer. It seems like this problem might be over 7 years old!

Here are the posts:

于 2010-12-10T01:00:45.757 回答
8

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

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

于 2012-04-06T13:35:56.757 回答
4

我找到了解决办法。

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

于 2009-07-21T13:46:13.867 回答
2

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

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

至少适用于 Visual Studio 2013 和 2015。

于 2016-01-28T09:36:31.337 回答
1

这是一个你应该和它一起生活的人。即使在 VS2008 中,这种事情也会时有发生。它主要取决于表单内容(控件、位置等),并且 VS 中没有禁用此类行为的选项。

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

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

  1. 移至 VS2008,设计器更加一致,但仍然在 .designer.cs 文件中随机播放控件
  2. 将您的代码放在一个源存储库中,因此如果您不小心保存了此类表单,您可以从存储库中恢复它。
于 2009-07-21T13:30:17.473 回答
0

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

于 2014-05-20T18:20:34.843 回答
0

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

于 2017-01-08T18:31:48.410 回答
0

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

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

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

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

于 2016-10-26T19:07:50.887 回答
-1

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

于 2017-12-20T17:30:46.617 回答
-2

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

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

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

于 2016-04-14T12:13:17.633 回答