今天早上我在Visual Studio Windows窗体设计器中偶然发现了一个奇怪的问题。我有一个表格,工作了大约一个月,现在没有变化。在应用程序中看起来像这样:
(文字难以理解,因为我不完全确定这里的法律含义)。
现在从今天开始,显然(我认为我昨天在设计师中打开了表格而没有问题)它在设计师中看起来像这样:
看看差异,每个控件(或几乎每个标签都没有受到影响,但可能与AutoSize有关)的宽度为311像素。在设计师搞砸之后,以下几行在整个文件中很常见:
this.panel1.Size = new System.Drawing.Size(311, 24);
无论价值来自哪里。此外,一个标签得到了有趣的文本"潐瑲⼠倠獯瑩潩㩮攀瑵慲ⱬ"
(它的原始字节没有任何意义)。
当我没有在设计器中打开表单时,没有任何不好的事情发生,项目甚至在文件未受影响时构建,并且在运行程序时看起来很好。但是打开设计器会触发设计器生成的代码中的上述变化,并且这些变化在编译时(显然)仍然存在。
在一个同事的机器上这根本不会发生(但是他不能在没有崩溃VS的情况下打开数据集,所以这里的两个设置可能都有点奇怪......)。
我真的很想知道这里发生了什么。有任何想法吗?
ETA:一旦它继续调整大小,我就无法改变设计器中控件的大小。调整大小只会导致一些视觉瑕疵,就好像控件已调整大小但在检查时仍然是311 px宽度。
ETA 2:奇怪的是:打开设计器(导致腐败,到目前为止一直很好),然后使用AnkhSVN进行挂起的更改并恢复对文件的所有更改也会还原损坏。即使在设计师中,表格看起来也应如此。直到我关闭并重新打开它。
我找到了罪魁祸首。我最近安装了RockScroll。虽然我无法直接将该行为链接到RockScroll,但我注意到某些表单的滚动条替换了它。并且该表单上的控件无理由地改变了大小。
卸载了RockScroll,它解决了这个问题。无论如何,感谢所有的输入。
可以使用“make same width”工具在设计器中单击一下即可完成此操作。
根据我的经验,如果Visual在构建期间被冻结,那么在屏幕上的随机位置点击以测试VS是否完成当前任务是很常见的)
但是,这只是一个想法。
也许你最近安装了另一种语言包(韩语也许)。
你在表单的构造函数或OnPaint方法中进行一些手动布局或锚定吗?我曾经遇到类似的问题,因为我试图手动修改某些元素的位置,而设计者在渲染时传递了无效的ClientRectangle(或其他东西)。