Windows窗体设计器会破坏表单布局

时间:2009-10-13 09:37:42

标签: winforms visual-studio-2008 windows-forms-designer

今天早上,我在Visual Studio的Windows窗体设计器中偶然发现了一个奇怪的问题。我有一个表格,工作了大约一个月,现在没有变化。它在应用程序中看起来像这样:

Screenshot of how the form should look like

(文字难以理解,因为我不完全确定这里的法律含义)。

现在从今天开始,显然(我认为我昨天在设计师面前打开了没有问题的形式)它在设计师看起来像这样:

Screenshot of how the form looks in the Windows Forms Designer

观察差异,每个控件(或几乎每个标签都没有受到影响,但可能与AutoSize有关)的宽度为311像素。在设计师搞砸之后,像下面这样的行在整个文件中很常见:

this.panel1.Size = new System.Drawing.Size(311, 24);

值的来源。此外,一个标签得到了有趣的文本"潐瑲⼠倠獯瑩潩㩮攀瑵慲ⱬ"(它的原始字节没有任何意义)。

当我没有在设计器中打开表单时,没有任何不好的事情发生,项目甚至在文件未受影响时构建,并且在运行程序时看起来很好。但是打开设计器会触发设计器生成的代码中的上述更改,并且这些更改在编译时(显然)仍然存在。

在一个同事的机器上这根本不会发生(但他不能在没有崩溃VS的情况下打开数据集,所以这里的两个设置可能都有点奇怪......)。

我真的很想知道这里发生了什么。有什么想法吗?

ETA:一旦设计师继续调整大小,就无法改变设计器中控件的大小。调整大小只会导致一些视觉瑕疵,就像控件 重新调整大小一样,但在检查时它仍然是311 px宽度。

ETA 2:非常奇怪:打开设计器(导致损坏,到目前为止一直很好),然后使用AnkhSVN进行挂起更改并恢复对文件的所有更改也会还原损坏。即使在设计师中,表格看起来也应如此。直到我关闭并重新打开它。

5 个答案:

答案 0 :(得分:4)

我找到了罪魁祸首。我最近安装了RockScroll。虽然我无法直接将该行为链接到RockScroll,但我注意到某些表单的滚动条替换了它。该表单上的控件无理由地改变了大小。

卸载了RockScroll,它解决了这个问题。无论如何,感谢所有的输入。

答案 1 :(得分:1)

您是否尝试过清理项目? (我担心它不会解决任何问题,但这是一个值得尝试的简单步骤)


另外,您可以清理Visual Studio缓存吗?在类似的情况下,它为我工作了很多次。

以下是有关VS缓存地狱的一些链接:1 2。如果您找到其他有用的信息,请随时编辑我的帖子。

答案 2 :(得分:0)

可以使用“制作相同宽度”工具在设计器中单击一下即可。

根据我的经验,如果在构建过程中Visual被冻结,那么点击屏幕上的随机位置以测试VS是否完成当前任务是很常见的。

只是一个想法。

答案 3 :(得分:0)

也许您最近安装了另一种语言包(韩语可能)。

答案 4 :(得分:0)

您是否正在使用表单的构造函数或OnPaint方法进行手动布局或锚定?我曾经遇到类似的问题,因为我试图手动修改某些元素的位置,而设计者在渲染时传递了无效的ClientRectangle(或其他东西)。