visual studio 2005设计师移动控件和调整表格

时间:2009-07-21 09:22:31

标签: c# visual-studio designer

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

10 个答案:

答案 0 :(得分:10)

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

以下是帖子:

答案 1 :(得分:7)

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

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

答案 2 :(得分:4)

我找到了一个解决方法。

不确定后面发生了什么,但我更改了我的显示属性。它工作正常。 这是序列:display propertis-> settings tab-> advance。 在高级对话框中,我将“DPI设置”从大(120dpi)更改为正常(96 dpi)

答案 3 :(得分:2)

在复杂的TabControls中,控件在顶部,左侧和右侧锚定时遇到了同样的问题。视觉工作室表单设计者每次打开表单时都会增加所有嵌套控件的宽度。

由于this post,我找到了一个简单的解决方法。我只是在每个选项卡中添加了一个面板,并将其dock属性设置为fill。选项卡中的所有现有控件都在这些面板中移动。这是有效的,即使控件是顶部,左侧和右侧锚定。

至少适用于Visual Studio 2013和2015。

答案 4 :(得分:1)

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

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

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

  1. 转移到VS2008,设计师更加一致,但仍然在.designer.cs文件中随机控制
  2. 将您的代码放在其中一个源存储库中,因此如果您不小心保存了此类表单,则可以从存储库中将其还原。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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

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

删除被移动的控件并将它们添加回表单解决了我的问题,正如ptutt在此处所建议的那样: Visual Studio designer moving controls and adding grid columns when form is opened

虽然我很欣赏ryantum的建议以及使用对接[与面板]的链接,正如上面链接中提到的Roland的博客文章https://weblogs.asp.net/rweigelt/28984所提到的那样,有一些如此微不足道的东西,我宁愿让它消失删除/添加回来。

答案 7 :(得分:0)

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

答案 8 :(得分:-1)

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

答案 9 :(得分:-2)

我也有这个问题。每次我打开设计师时,每个盒子都有锚和#34;右边#34;向左移动约20个像素。另外,每个盒子的底部都有锚点" left"表格外约200像素。

此表单有许多控件,不应缩小在较小的显示器上,因此设置为自动滚动,设计器中的表单本身比显示的最小尺寸(历史记录......)小。我只是将尺寸设置为最小尺寸,这样设计师就不会出现任何滚动条,并且锚点按预期工作而不会搞砸帖子。

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